Re[5]: Специализация метода. Нужно устранить ошибку
От: σ  
Дата: 24.08.22 15:40
Оценка: 22 (1) +1
АТ>Прямой "короткий" ответ на вопрос не имеет никакого отношения ни к каким частичным специализациям функций. Язык просто запрещает объявление явных специализаций любых шаблонов внутри определения охватывающего шаблона класса. Этот запрет в одинаковой мере распространяется и на классы, и на функции, т.е. отсутствие частичной специализации функций тут вообще ни при чем.

Кхм. Ващет, вопрос был про template<typename T> void STest4<T>::foo<TypeH2>() { ... } (вне класса), а не про template<> void foo<TypeH1> (внутри класса)

АТ>
template <typename T> struct S
{
  template <typename U> struct N {};
  template <> struct N<int> {}; // <- Ошибка
};


АТ>(Я все время забываю, где этот запрет сформулирован в стандарте и навскидку не могу его найти.)


Неудивительно, его больше 5 лет как нет: https://cplusplus.github.io/CWG/issues/727.html
И запрет выпилили в статусе defect report-а, т.е. с ретроактивным применением выпиливания.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.