2010-07-03 26 views
3

GCC似乎並不與本地類批准的instanciating模板:如何在模板中使用本地類?

template <typename T> 
void f(T); 

void g() 
{ 
    struct s {}; 

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

VC不抱怨。

應該怎麼做?

回答

12

在C++ 03中它不能完成,C++ 0x將lift那個限制。

C++ 03,§14.3.1/ 2

本地類型,沒有鍵,無名類型或任何這些類型的配混一個類型的類型不應使用作爲模板類型參數的模板參數。

相關問題