如何将泛型lambda传递到函数中 我有以下C++代码: 模板 void元类型处理程序(T1 lambda1、T2 lambda2、T3 lambda3){ lambda1(1); λ2('x'); lambda3(真); } int main(){ 自动f=[](自动x){}; MetaTypeHandler(f,f,f); }

如何将泛型lambda传递到函数中 我有以下C++代码: 模板 void元类型处理程序(T1 lambda1、T2 lambda2、T3 lambda3){ lambda1(1); λ2('x'); lambda3(真); } int main(){ 自动f=[](自动x){}; MetaTypeHandler(f,f,f); },c++,templates,lambda,c++14,generic-lambda,C++,Templates,Lambda,C++14,Generic Lambda,多次通过f是很难看的。是否可以编写MetaTypeHandler(),以便只传递f一次或两次?我认为模板参数可能会有帮助,但我不能完全理解它们。我不理解这个问题 这是一个通用的lambda 基本上是一个结构的对象,其中包含一个模板操作符() 因此,您只能将其传递一次,并将其用于所需的所有类型 #include <iostream> template <typename T> void MetaTypeHandler (T lambda) { lambda(42)

多次通过
f
是很难看的。是否可以编写
MetaTypeHandler()
,以便只传递
f
一次或两次?我认为模板参数可能会有帮助,但我不能完全理解它们。

我不理解这个问题

这是一个通用的lambda

基本上是一个结构的对象,其中包含一个模板
操作符()

因此,您只能将其传递一次,并将其用于所需的所有类型

#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;});
 }
#包括
模板
void MetaTypeHandler(T lambda)
{
lambda(42);
λ('x');
lambda(“abc”);
lambda(真);
}
int main()
{
MetaTypeHandler(

[](auto const&x){std::cout您只需提供一个重载:

#include <iostream>

template <class T1, class T2, class T3>
void MetaTypeHandler(T1 lambda1, T2 lambda2, T3 lambda3) {
 lambda1(1);
 lambda2('x');
 lambda3(true);
}

template <class T>
void MetaTypeHandler(T lambda)
{
    MetaTypeHandler(lambda, lambda, lambda);
}

int main() {
  auto f = [] (auto x) {std::cout << x << std::endl;};
  MetaTypeHandler(f);
}
#包括
模板
void元类型处理程序(T1 lambda1、T2 lambda2、T3 lambda3){
lambda1(1);
λ2('x');
lambda3(真);
}
模板
void MetaTypeHandler(T lambda)
{
MetaTypeHandler(lambda、lambda、lambda);
}
int main(){

AutoF= [A](AutoX){STD::CUT”结构,其中模板操作程序()在这里“谢谢,现在我明白了。我真的应该学习C++一次:D@Bulat看到@JVApen非常感谢!看来这个网站在很多情况下都可以帮助我