Re: Не могу явно инстанцировать шаблон функции-члена
От: rg45 СССР  
Дата: 09.10.18 18:42
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>На что MS VC++ версий от 13.10 до 15.00 выдает "error C2252: cannot explicitly instantiate template in current scope". В 19.10 сообщение поменялось на "error C2252: an explicit instantiation of a template can only occur at namespace scope".


Согласно стандару (п. 17.7.2/6), такая явная специализация должна выполняться в обрамляющем пространстве имен, о чем компилятор и говорит вполне ясно.

An explicit instantiation of a class, function template, or variable template specialization is placed in the namespace in which the template is defined. An explicit instantiation for a member of a class template is placed in the namespace where the enclosing class template is defined. An explicit instantiation for a member template is placed in the namespace where the enclosing class or class template is defined.


ЕМ>В описании ошибки предлагается добавить "<>" после template, и заодно там явно указывается имя класса.


Пардон за каламбур, но похоже, в опсании ошибки допущена ошибка — явную специализацию хотели сделать как положено, в пространстве имен (о чем намекает присутствие явной спецификации имени класса), но нечаянно загнали внутрь класса.

ЕМ>Вот такой пример успешно компилируется всеми имеющимися у меня версиями MS VC++...


Считай это ошибкой прошлого
--
Не можешь достичь желаемого — пожелай достигнутого.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.