c++14 泛型lambda表达式
直接看一个例子:
#include <iostream>
auto lam = [](auto&& v) {
std::cout << v << std::endl;
};
lam(31);
31
调用一下
lam(31);
31
有了泛型lambda,在一个模板函数中为表达式输入一个不确定类型的参数
template<typename T, typename Func>
void doSth(T&& t, Func func) {
func(t);
}
调用一下
doSth("hello", lam);
doSth(1.21, lam);
hello
1.21
在c++11中,只能使用一个带有模板调用操作符重载的仿函数对象实现
struct Method {
template<typename T>
void operator ()(T&& t) {
std::cout << t << std::endl;
}
};
调用一下
doSth("hello", Method());
doSth(1.21, Method());
hello
1.21