我有以下 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);
}
多次传递
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;});
}
关于c++ - 如何将通用 lambda 传递给函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56098005/