这是我之前的问题“C++14 标准库的哪些部分可能是,哪些部分将被制作constexpr?”的后续问题。和“constexpr操作员重载的指南?”
在运行时世界中,为多个数据成员的结构重载的一个很好的习惯用法operator<std::tie是将结构转换为 astd::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++ 错误报告 3 小时后由@JonathanWakely 修复!