【发布时间】:2017-03-01 08:39:39
【问题描述】:
代码:
auto main() -> int
{
int b = 42;
auto lambasta = [&]()
{
using B_type = decltype( b );
return B_type{};
};
(void) lambasta;
}
使用 MinGW g++ 6.3.0 -std=c++14 -Wall -pedantic-errors 编译时不进行诊断。使用 Visual C++ 2015 update 3 编译失败,
【问题讨论】:
-
即使没有捕获 clagg/gcc Demo 也可以编译。
-
捕获列表中的
&b有效吗? -
@TheQuantumPhysicist:是的,显式捕获名称有助于 Visual C++ 理解它的存在。名称的实际 ODR 使用也是如此(在提及之前)。不幸的是,这不是我原来的问题的解决方法,其中名称出现在作为宏参数提供的表达式中。
-
看起来它已在 MSVC 2017 RC 中修复(它也可以在没有捕获的情况下使用)。