C++, специализация шаблона
Похоже, недавно столкнулся с такой же проблемой. Хотелось бы узнать её решение.
В моём случае, кажется, помогло вынести реализацию за определение класса.
В моём случае, кажется, помогло вынести реализацию за определение класса.
Ага, так и сделал
Похоже, что в данном случае MSVC не соответствует стандарту — такая специализация на самом деле запрещена. Это подтверждает и проверка с помощью компилятора Comeau:
"ComeauTest.c", line 10: error: explicit specialization is not allowed in theсм. также http://msdn.microsoft.com/library/default.asp?url=/library/e...
current scope
template<>
^
shit
This still breaks, and rightly so: According to the standard, the declaration must appear in the namespace scope containing X, which in this case is global scope.
I don't know a workaround for this. For now you apparently can't specialize template members.
Оставить комментарий
erotic
Почему нельзя делать так:Под MSVC2005 компилируется нормально, под gcc - ошибка:
Хотя по стандарту специализация должна находиться в том же неймспейсе, что и сам шаблон. Вроде, там она и находится.