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

I Can Define a Templatized Function Within a Lambda in Visual Studio

本文关键字:一个 函数 Studio Visual 中的 Lambda 定义 我可以      更新时间:2023-10-16

在这个答案中,我指出我可以在lambda中定义的结构中定义模板化方法。当我尝试这样做时,gcc会给出一个编译器错误。

在一个最小、完整、可验证的例子的结尾,我在这里写了一个更简单的例子:

[]{struct{
    template <typename T> foo() { cout << "defaultn"; }
    template <> foo<char> foo() { cout << "specializedn"; } } result;
    return result; }

实时示例

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

本地类中成员模板的声明无效

来自[temp.mem]:

非闭合类型的局部类不应具有成员模板。

我不知道Visual Studio在做什么。