gpt4 book ai didi

c++ - 如何将通用 lambda 传递给函数

转载 作者:太空狗 更新时间:2023-10-29 20:08:13 25 4
gpt4 key购买 nike

我有以下 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com