簡體   English   中英

為什么std :: tie沒有標記為c ++ 14的constexpr?

[英]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_tuplestd::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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM