2015-07-20 67 views
0

这段代码中定义的类型上的Visual Studio 2013运行,但不会对GCC 4.9.2:实现在一个模板参数

template <typename T> 
void foo(){ 
    T::value_type bar('a'); 

    cout << bar << endl; 
} 

int main() { 
    foo<string>(); 

    return 0; 
} 

看来,Visual Studio的2013型演绎,让我实现模板中定义的类型参数,而gcc 4.9.2 does not

有没有解决方法,这将允许在gcc中的这种行为?

+0

你得到了什么错误,这将有助于 –

回答

2

您需要告诉编译器T::value_type命名一个类型,以便它知道如何解析声明。

typename T::value_type bar('a'); 

为你的需要在哪里和为什么要做到这一点的详细信息,请参阅this question