gpt4 book ai didi

C++ 泛型 lambdas : pattern type deduction

转载 作者:太空狗 更新时间:2023-10-29 22:55:47 25 4
gpt4 key购买 nike

在 C++20 中,根据建议 Familiar template syntax for generic lambdas , 下面的代码正确推导出类型 T:

auto lamTest = []<typename T>(std::initializer_list<T> const & l)
{
std::vector<T> v{ l };
for (auto && e : v)
std::cout << e << " ";
};
lamTest( { 1,2,3 } );

是否可以在 C++17(或 14)中进行这种模式推导?

注意:我特别询问有关 lambda 表达式的问题。

最佳答案

这是标准的函数模板推导。这与此没有什么不同:

template<typename T>
auto lamTest(std::initializer_list<T> const & l)
{
std::vector<T> v{ l };
for (auto && e : v)
std::cout << e << " ";
};

其中(std::initializer_list 放在一边)是常规的 C++98 代码。

C++20 唯一添加的新功能是使用显式模板参数列表编写 lambda 的能力,而不是(或除此之外)C++14 的 auto。在其他方面,它的行为与任何其他模板函数一样。

关于C++ 泛型 lambdas : pattern type deduction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50431635/

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