相关疑难解决方法(0)

为什么我不能在C++ 11中创建lambdas(相同类型)的向量?

我试图创建一个lambda矢量,但失败了:

auto ignore = [&]() { return 10; };  //1
std::vector<decltype(ignore)> v;     //2
v.push_back([&]() { return 100; });  //3
Run Code Online (Sandbox Code Playgroud)

直到第2行,它编译得很好.但第3行给出了编译错误:

错误:没有匹配函数来调用'std :: vector <main():: <lambda()>> :: push_back(main():: <lambda()>)'

我不想要一个函数指针向量或函数对象向量.但是,封装真实 lambda表达式的函数对象向量对我有用.这可能吗?

c++ lambda vector c++11

83
推荐指数
5
解决办法
3万
查看次数

将双变量std :: function转换为单变量std :: function

我有一个函数,它获取两个值,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)

我在这做错了什么?什么是最好(最有效)的方法呢?

c++ lambda c++11

4
推荐指数
1
解决办法
251
查看次数

标签 统计

c++ ×2

c++11 ×2

lambda ×2

vector ×1