Код: Выделить всё
template
class C
{
struct S
{
template
void fun() const
{}
};
void f(const S& s)
{
s.fun();
}
};
// Dummy main function
int main()
{
return 0;
}
Код: Выделить всё
error: use 'template' keyword to treat 'fun' as a dependent template name
s.fun();
^
template
Как ни странно, MSVC 19.22 компилирует это просто отлично.
примечание
Прежде чем голосовать, чтобы закрыть как обман, где и почему я должен поставить «шаблон» и «имя типа» ключевые слова? учтите, что это особый случай, когда даже если S действительно является зависимым именем, в контексте f оно не было бы зависимым, если бы не тот факт, что они являются членами текущего экземпляра.
Подробнее здесь: https://stackoverflow.com/questions/600 ... uired-here
Мобильная версия