auto
在将(可能)与 C++17 一起引入的模板参数中的优点是什么?
当我想实例化模板代码时,它只是 auto
的自然扩展吗?
auto v1 = constant<5>; // v1 == 5, decltype(v1) is int
auto v2 = constant<true>; // v2 == true, decltype(v2) is bool
auto v3 = constant<'a'>; // v3 == 'a', decltype(v3) is char
我还能从这个语言功能中获得什么?
原文由 Damian 发布,翻译遵循 CC BY-SA 4.0 许可协议
template <auto>
特性 ( P0127R1 ) 在芬兰奥卢举行的 ISO C++ 2016 会议上被 C++ 接受。模板参数中的
auto
关键字可用于指示非类型参数,其类型在实例化点推导出。将其视为一种更方便的写作方式会有所帮助:例如,
现在可以写成
您不再需要明确说明类型。 P0127R1 还包括一些简单但很好的例子,其中使用
template <auto>
和可变参数模板参数非常方便,例如编译时列表常量值的实现:在 C++1z 之前的版本中,
HomogenousValueList
可以简单地写成如果不将值包装在其他一些模板中,则无法编写
HeterogenousValueList
的等价物,例如: