Как использовать локальные классы с шаблонами?

StackOverflow https://stackoverflow.com/questions/3172909

Вопрос

GCC не одобряет неместные шаблоны с местными классами:

template <typename T>
void f(T);

void g()
{
    struct s {};

    f(s()); // error: no matching function for call to 'f(g()::s)'
}

VC не жалуется.

Как это должно быть сделано?

Это было полезно?

Решение

В C ++ 03 не может быть сделано, C ++ 0x будет поднимать это ограничение, хотя.

C ++ 03, §14.3.1/2:

Местный тип, тип без связи, безымянный тип или тип, усугубляемый из любого из этих типов, не должен использоваться в качестве шаблона-аргумента для параметра шаблона типа.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top