Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无捕获的Lambda值返回_C++_Gcc_Lambda_Clang++_Icc - Fatal编程技术网

C++ 无捕获的Lambda值返回

C++ 无捕获的Lambda值返回,c++,gcc,lambda,clang++,icc,C++,Gcc,Lambda,Clang++,Icc,这源于 以下程序在gcc和icc上编译,但在VS和clang上编译失败: template <typename Y> auto add_value(Y y) { const short z{9}; return [y](auto x) { return z; }; } int main() { add_value(2); } 模板 自动添加值(Y) { 常数短z{9}; 返回[y](自动x) { 返回z; }; } int

这源于

以下程序在gcc和icc上编译,但在VS和clang上编译失败:

template <typename Y>
auto add_value(Y y)
{
    const short z{9};
    return [y](auto x)
    {
        return z;
    };
}

int main()
{
    add_value(2);
}
模板
自动添加值(Y)
{
常数短z{9};
返回[y](自动x)
{
返回z;
};
}
int main()
{
增加价值(2);
}
标志是:
-std=c++14-O2-Wall-Wshadow-pedantic-pthread


哪个是正确的?我想gcc在这里是正确的?但我更希望这次失败

您可以将链接粘贴到godbolt而不是屏幕截图。如果将其更改为
static const z{9},clang将编译该链接
这是ODR使用问题吗?是的,似乎是ODR问题。如果您更改
返回z,clang会编译它
返回+z,或者如果显式指定lambda的返回类型。