#include <iostream>
typedef std::function<bool(int)> set;
using namespace std;
set singletonSet(int a) {
return [&] (int x) { return (a == x); };
}
bool contains(set s, int test) {
return s(test);
}
int main() {
auto first = singletonSet(5);
auto r1 = contains(first, 10);
auto r2 = contains(first, 5);
cout << r1 << " " << r2 << endl;
return 0;
}
を返す私は、これは0 1
を印刷することを期待したが、これは基本的なエラーの場合、結果は1 1
C++のstd ::関数は、予期しない値に
初級C++ labmdaプログラマ、ここで事前にとても残念です。
'[&]'は、 'return'ステートメントの後に死ぬ' a'を参照してキャプチャします。 –