这是我之前的问题“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 修复!