Bul*_*lat 3 c++ lambda templates generic-lambda c++14
我有以下C ++代码:
template <class T1, class T2, class T3>
void MetaTypeHandler(T1 lambda1, T2 lambda2, T3 lambda3) {
lambda1(1);
lambda2('x');
lambda3(true);
}
int main() {
auto f = [] (auto x) {};
MetaTypeHandler(f,f,f);
}
Run Code Online (Sandbox Code Playgroud)
经过f多次是丑陋的。是否有可能写MetaTypeHandler(),这样f传递只有1〜2次?我认为模板模板参数可能会有所帮助,但无法绕过它们。
我不明白这个问题。
这是一个通用的 lambda。
基本上是带有模板 的结构对象operator()。
因此,您只能通过一次并将其与所需的所有类型一起使用
#include <iostream>
template <typename T>
void MetaTypeHandler (T lambda)
{
lambda(42);
lambda('x');
lambda("abc");
lambda(true);
}
int main()
{
MetaTypeHandler(
[](auto const & x){ std::cout << "x is " << x << std::endl;});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |