仿函数结构的 C++ 类型
C++ type for functor structs
我正在尝试使用可以分配给某些 C++ 标准仿函数(例如:std::plus
、std::multiplies
等...)的某种类型的单个变量
这里是 std::plus
的定义(来自 link):
template <class T> struct plus : binary_function <T,T,T> {
T operator() (const T& x, const T& y) const {return x+y;}
};
我试过了
#include <functional>
std::binary_function<int, int, int> func = std::plus;
但它不起作用。
如何正确定义它?
用于保存具有相同签名的所有类型的可调用对象的单个变量是 std::function<int(int,int)>
。尽管仿函数需要指定模板参数或从参数中推导出它们:
std::function<int(int,int)> func2 = [](int a,int b){ return std::plus{}(a,b);};
或
std::function<int(int,int)> func = std::plus<int>{};
我正在尝试使用可以分配给某些 C++ 标准仿函数(例如:std::plus
、std::multiplies
等...)的某种类型的单个变量
这里是 std::plus
的定义(来自 link):
template <class T> struct plus : binary_function <T,T,T> {
T operator() (const T& x, const T& y) const {return x+y;}
};
我试过了
#include <functional>
std::binary_function<int, int, int> func = std::plus;
但它不起作用。 如何正确定义它?
用于保存具有相同签名的所有类型的可调用对象的单个变量是 std::function<int(int,int)>
。尽管仿函数需要指定模板参数或从参数中推导出它们:
std::function<int(int,int)> func2 = [](int a,int b){ return std::plus{}(a,b);};
或
std::function<int(int,int)> func = std::plus<int>{};