C++ 我是否可以修改函数包装器,使其使用其旧值?

C++ 我是否可以修改函数包装器,使其使用其旧值?,c++,c++11,C++,C++11,我可以这样修改函数包装器吗 std::function<int(int)> a=[](int x){return 2*x;}; a=[f=a](int x){return f(x)+1;}; std::函数a=[](int x){return 2*x;}; a=[f=a](intx){返回f(x)+1;}; 所以我可以动态地构建越来越复杂的函数?这主要是因为初始化表达式是在C++14中引入的 然而,这在C++14中是有效的语法。这里有一些证据:你为什么不试试呢?这可能有什么问题?

我可以这样修改函数包装器吗

std::function<int(int)> a=[](int x){return 2*x;};
a=[f=a](int x){return f(x)+1;};
std::函数a=[](int x){return 2*x;};
a=[f=a](intx){返回f(x)+1;};

所以我可以动态地构建越来越复杂的函数?

这主要是因为初始化表达式是在C++14中引入的


然而,这在C++14中是有效的语法。这里有一些证据:

你为什么不试试呢?这可能有什么问题?您标记了这个C++11,所以没有。初始化捕获是C++14。@T.C.好的,可以做
a=[a](intx){返回a(x)+1;}并完成同样的事情,如果有点让人困惑的话。@Barry当然,我的观点是,编写的代码不会在C++11编译器中编译。