【发布时间】:2016-07-02 18:51:34
【问题描述】:
我有一个数据成员的类型:
std::function<T(T&, T&)>&
构造函数接受相同类型的参数。
我应该如何使用 lambdas 发送这样的函数?
我试过了
MyClass tmp([](Foo &a, Foo &b) { return a+b; }, ...);
但它失败了。
例如:
main.cpp
#include "MyClass.h"
int main()
{
MyClass a([](int x, int y) { return x+y;});
return 0;
}
MyClass.h
#pragma once
#include <functional>
class MyClass
{
public:
MyClass(std::function<int(int, int)>&) noexcept;
private:
std::function<int(int, int)>& fun;
};
【问题讨论】:
-
失败怎么办?创建minimal reproducible example。
-
为什么需要将非
const引用 传递给std::function? -
@nwp:失败的方式是将prvalue传递给采用非
const引用的函数失败。 -
@nwp 对不起,我添加了你的要求。
-
@NicolBolas 不,试试我发布的示例。
标签: c++ lambda pass-by-reference