Как использовать локальные классы с шаблонами? - PullRequest
3 голосов
/ 04 июля 2010

GCC, похоже, не одобряет создание шаблонов с локальными классами:

template <typename T>
void f(T);

void g()
{
    struct s {};

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

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

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

1 Ответ

12 голосов
/ 04 июля 2010

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

C ++ 03, §14.3.1 /2 :

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

...