CTTCG 17 Future Directions
这一章讲的是对未来的展望。
浮点数和字符串作为模板参数
浮点数在 gcc C++20 是可以作为非类型模板参数(NTTP)的;clang 不支持。目前 C++ compiler support - cppreference.com 上也看不到相关的支持项目。
字符串字面量在 C++20 只能通过隐式转换成简单的对象实现模板参数。15/特例:变参列表/参数包 一节有描述。字符数组则是早就可以作为模板参数,尽管作为引用其 linkage 在 C++11 和 C++14 有额外的要求。
当前 class type 和浮点数没有作为非模板参数得到全面的支持,原因很可能是相等性比较在链接阶段很难进行(浮点数的标准可能不同,或者因为精度缺失会误判;类可能会重载比较操作符)。
减少类模板 pack expansion 的限制
目前不能在类模板参数中使用多个 pack expansion,而且使用时也必须把它放在最末尾的位置;不仅模板参数声明是这样,填充类模板参数也是这样。
将 void
作为一种常态类型
其他章节中提到了当函数返回值是 void 时,不能将其绑定在变量上,即便这个变量今后不会被使用。Kotlin 就用了 Unit
类型来处理这个问题,C++ 很难改这一点了。