我可以在Visual Studio中定义Lambda中的模板化函数

时间:2016-05-09 14:02:15

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

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; }

Live Example

此代码在Visual Studio中运行良好,可在http://webcompiler.cloudapp.net/进行测试,但链接的gcc代码:

  

本地类

中的成员模板声明无效

1 个答案:

答案 0 :(得分:3)

来自[temp.mem]

  

非闭包类型的本地类不应具有成员模板。

我不知道Visual Studio正在做什么。