Tem*_*Rex 23 c++ tuples constexpr c++11 c++14
这是我之前提出的问题的后续问题"C++ 14标准库的哪些部分可能是什么以及将制作哪些部分constexpr?" 和" constexpr运营商超载指南?"
在运行时世界中,为多个数据成员的结构重载的operator<一个很好的习惯用法是std::tie将结构转换为a std::tuple并在其上进行捎带,operator<这就是Right Thing™(各种成员的字典比较).
在C++ 14,许多地方std::tuple制成constexpr,特别是make_tuple,std::get与前面提到的operator<.然而,似乎看似相关std::tie的没有标记constexpr.这很烦人,因为它使定义用户定义的文字类型在编译时可以比必要的更冗长.
问题:是否有任何技术原因std::tie未标记constexpr为C++ 14?
更新:LWG问题2301,在libc ++和libstdc ++ bug 65978中实现
更新2:在修改libstdc ++错误报告后,由@JonathanWakely修复了3个多小时!
在它利用constexprness的任何情况下,make_tuple应该表现得完全相同,tie除了从概念上tie会从引用添加额外级别的不需要的间接.因此,没有必要tie为constexpr自make_tuple会达到这一目的.
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |