Kodu:Bir lambda'da dış etki alanına erişim, g ++ veya Visual mi, ne de doğru değil mi?
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
ile hiçbir teşhis ile derler. Visual C++ 2015 Güncellemesi 3,
foo.cpp(6): error C2065: 'b': undeclared identifier
Derleme bile Clagg/gcc [Demo] için yakalama olmadan (http://coliru.stacked-crooked.com/a/002edb55e3a07e00). – Jarod42
Yakalama listesinde '& b' çalışıyor mu? –
@TheQuantumPhysicist: Evet, adın açık olarak yakalanması Visual C++ 'ın var olduğunu anlamasına yardımcı olur. Yani gerçek ODR isminin kullanımı (bahsetmeden önce). Maalesef bu, orijinal sorunum için bir geçici çözüm değil, adın makro argüman olarak sağlanan bir ifadede oluştuğu yerdir. –