C++ 通用 lambda:模式类型推导
c++ generic lambdas: pattern type deduction
在 C++20 中,在提案"通用 lambda 的熟悉模板语法"下,以下代码正确推断出类型 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
。在其他方面,它的行为就像任何其他模板函数一样。
相关文章:
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 使用访问者模式检查派生类类型?
- C++ 通用 lambda:模式类型推导
- CRTP 模式 但是在数据结构中存储非同构类型
- 正确的方法或设计模式,以简化类中的“operatorX”函数,以按给定顺序比较相同类型的属性
- C++模板元编程:如何在表达式模式中推断类型
- 如何使用C++模板魔术来对类型进行模式匹配
- 返回不同类型/类的方法的设计模式
- 类型擦除和一种模板方法模式
- 生成器模式实现中的不完整类型错误
- 在使用分段寻址模式的 16 位系统上,"size_t"、"uintptr_t"、"intptr_t"和"ptrdiff_t"类型的实际大小是多少?
- 在Qt中注册元类型的模式
- 具有类型信息的观察者模式(C++)
- 用于将静态字符串常量与类型相关联的类型特征模式
- 返回一组数据类型之一的最佳模式
- 用于在不使用 RTTI 的情况下缓存不同派生类型的设计模式
- C++:直接使用派生类型的模板方法模式