0
私は最近、コードのこの作品は、GCCとMSVCの両方で正常にコンパイルされることが分かった:C++バリデーションラムダで "auto"キーワードを使用しないでください。
auto foo = [](...){
cout << "foo() called" << endl;
};
それがあるかのように動作しますので、それは、それをパラメータの任意の種類の任意の数を取り、単にそれらのパラメータを持つ何もしません
// All of these lines will call the lambda function
foo();
foo(100);
foo("Test");
foo("Testing", 1, 2, 3);
lambda functions上のC++の参照はこれについて言及していないようだ、とどちらもparameter packsのページをしません:auto
は...
の前に置かれました。
はさらに驚くべきことに、これはコンパイルに失敗します。
auto foo = [](... x){ // compile error
cout << "foo() called" << endl;
};
は標準によって決まるこの動作であり、もしそうなら、なぜかつてのコンパイル、後者は失敗するでしょうか?
[Variadic引数](http://en.cppreference.com/w/cpp/language/variadic_arguments) – cpplearner
これはすべてを説明しています! – Bernard