实现模板参数中定义的类型

时间:2015-07-20 11:02:30

标签: c++ visual-studio templates gcc types

此代码在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中使用此行为?

1 个答案:

答案 0 :(得分:2)

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

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

有关您需要执行此操作的位置和原因的详细信息,请参阅this question