我试图创建一个lambda矢量,但失败了:
auto ignore = [&]() { return 10; }; //1
std::vector<decltype(ignore)> v; //2
v.push_back([&]() { return 100; }); //3
Run Code Online (Sandbox Code Playgroud)
错误:没有匹配函数来调用'std :: vector <main():: <lambda()>> :: push_back(main():: <lambda()>)'
我不想要一个函数指针向量或函数对象向量.但是,封装真实 lambda表达式的函数对象向量对我有用.这可能吗?
我有一个函数,它获取两个值,x和y,并返回结果:
std::function< double( double, double ) > mult =
[]( double x, double y){ return x*y; };
Run Code Online (Sandbox Code Playgroud)
现在我想得到一个常量y的单变量函数.我编写了以下代码,但它不起作用.
std::function<
std::function< double(double) > (
std::function< double(double, double) >,
double
)
> funcYgivenX =
[](std::function< double(double, double) > func2d, double inX) {
return [&func2d, &inX]( double inY ) {
return func2d(inX, inY);
};
};
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?什么是最好(最有效)的方法呢?