7
コード:ラムダの外側のスコープ名にアクセスするには、g ++またはVisualかどちらかですか?
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のアップデート3、
foo.cpp(6): error C2065: 'b': undeclared identifier
コンパイルさえclagg/gccの[デモ]のキャプチャなし(http://coliru.stacked-crooked.com/a/002edb55e3a07e00)。 – Jarod42
キャプチャリストの '&b'は機能しますか? –
@TheQuantumPhysicist:はい、名前の明示的なキャプチャは、Visual C++が存在することを理解するのに役立ちます。名前の実際のODRの使用も同様です(言及の前に)。残念ながら、それは私の元の問題の回避策ではありません。マクロの引数として指定された式で名前が発生します。 –