【发布时间】:2016-05-09 14:02:14
【问题描述】:
在this answer 中,我指出我可以在 lambda 中定义的结构中定义模板化方法。当我尝试这样做时,gcc 会出现编译器错误。
在Minimal, Complete, Verifiable Example 的结尾,我在这里写了一个更简单的例子:
[]{struct{
template <typename T> foo() { cout << "default\n"; }
template <> foo<char> foo() { cout << "specialized\n"; } } result;
return result; }
此代码在 Visual Studio 中运行良好,可以在 http://webcompiler.cloudapp.net/ 进行测试,但链接的 gcc 代码:
本地类中成员模板的声明无效
【问题讨论】:
-
这很有趣,我编辑了链接的问题,因为我相信 Visual Studio 不应该允许编译这段代码。而且绝对不是跨平台的标准符合代码。
标签: c++ visual-studio templates gcc lambda