本人使用Visual Studio 2015 和 Cygwin GCC 5.4 分别编译了如下文件:
#include <iostream>
auto increment(int n)
{
return [&](int i) { return n += i; };
}
int main(void)
{
auto a = increment(1);
std::cout << a(2) << std::endl;
std::cout << a(3) << std::endl;
std::cout << a(4) << std::endl;
}
GCC 输出:
VS2015 Debug模式下崩溃,Release模式直接将结果写进main中了(所以没崩溃)。。。
问,如何在C++11中正确使用闭包?
#include <iostream>
auto increment(int n)
{
return [&](int i) { return n += i; };
}
int main(void)
{
auto a = increment(1);
std::cout << a(2) << std::endl;
std::cout << a(3) << std::endl;
std::cout << a(4) << std::endl;
}
GCC 输出:
VS2015 Debug模式下崩溃,Release模式直接将结果写进main中了(所以没崩溃)。。。
问,如何在C++11中正确使用闭包?