c++ - 实现在模板参数中定义的类型

标签 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 中允许这种行为?

最佳答案

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

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

参见 this question有关您需要在何处以及为何需要执行此操作的更多详细信息。

关于c++ - 实现在模板参数中定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514810/

相关文章:

c++ - 您如何理解错误 : cannot convert from 'int []' to 'int []'

c++ - 正确签名/检测 Container::reserve() 的存在

c++ - (指向)错误....*叹息*

visual-studio - 注释掉 C++ 代码,visual studio

C# 项目看不到 Excel COM Reference

c++ - 如何在 msvc 中编译和链接生成的文件?

Django 两列表单

c++ - node, & node 和 node->next in 链表的区别

c++ - 是否可以在运行时强制转换模板参数?

c++ - 内联和死代码删除优化能否阻止模板实例化?