[英]Why is `constexpr` part of the C++14 template prototype for `std::max()`?
[英]Why is std::tie not marked constexpr for C++14?
這是我之前提出的問題的后續問題“C ++ 14標准庫的哪些部分可能是什么,哪些部分將成為constexpr
?” 和“做constexpr
運算符重載的指南?”
在運行時世界中, 對於多個數據成員的結構重載operator<
一個很好的習慣是使用std::tie
將結構轉換為std::tuple
並在其operator<
上捎帶operator<
正確的東西™(各成員的字典比較)。
在C ++ 14中, std::tuple
許多部分都是constexpr
,特別是make_tuple
, std::get
和前面提到的operator<
。 然而,看起來似乎相關的std::tie
沒有標記為constexpr
。 這很煩人,因為它使定義用戶定義的文字類型在編譯時可以比必要的更冗長。
問題:有沒有任何技術原因使得std::tie
沒有標記為c ++ 14的constexpr
?
更新 : LWG問題2301 , 在libc ++和libstdc ++ bug 65978中實現
更新2 :在修改libstdc ++錯誤報告后,由@JonathanWakely修復了3個多小時!
在使用constexpr
ness的任何情況下, make_tuple
行為應該與tie
完全相同,除了make_tuple
tie
會從引用添加額外級別的不需要的間接。 因此,沒有必要將tie
作為constexpr
因為make_tuple
將用於此目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.