int main()
{
auto l = [x = 10]() -> decltype(x) {};
}
clang++ 4.0 rejects this code arka lambda nesneleri: aşağıdaki hata ileerişme generalize çekilen aşağıdaki hata ile dönüş türü
error: use of undeclared identifier 'x' auto l = [x = 10]() -> decltype(x) {}; ^
-
In function 'int main()': error: 'x' was not declared in this scope auto l = [x = 10]() -> decltype(x) {}; ^ error: 'x' was not declared in this scope In lambda function: warning: no return statement in function returning non-void [-Wreturn-type] auto l = [x = 10]() -> decltype(x) {}; ^
Bu bir hata mıdır, yoksa standart olarak, C++ 14 genelleştirilmiş sözdizimi ile yakalanan nesnelerin lambda'nın son dönüş türünde kullanılmasını açıkça önleyen bir şey var mı? Her iki derleyiciler olmayan jeneralize yakalar memnun olduklarını
Not:
int main()
{
int x = 10;
auto l = [x]() -> decltype(x) { return 0; };
}
'int 'varsayılan bir döndürme türü olarak kullanılmış, gcc başka türden mi çıkar? – alexeykuzmin0
@ alexeykuzmin0: iyi yakalama. [Her zaman 'int' sonucunu çıkarır] (http://melpon.org/wandbox/permlink/OivD8IYUT3Jq0720) ... –
sorusunun güncellenmesi "decltype" ve lambdas ile bazı garip durumlar vardır, örn. [Bu] (https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/6-VL5bzK6Ik). – TartanLlama