簡體   English   中英

為什么 std::isnan 不是 constexpr?

[英]Why is std::isnan not constexpr?

從 C++20 開始,std::isnan 不是 constexpr。

這有技術原因嗎?

我能想到的只是它在“C 標頭”中,所以沒有人費心去修復它(處理浮點數的<limits>函數是 constexpr,但不幸的是numeric_limits不包含 isnan 檢查)。

答案基本上是“因為該提案尚未合並到標准中”

P0533提出你的要求,但它沒有進入 C++20。

其中一個問題是,也許這個提議有點大...... <cmath><cstdlib>中的一些函數被允許設置全局錯誤代碼,這使得整個“ constexpr all the things”提議變得復雜*

我認為這些分類功能應該沒有任何問題; std::isnan及其兄弟std::fpclassify被定義為分別與 C 宏isnanfpclassify相同。 這需要稍微改變。


* (旁白: p2043 “不要constexpr所有的東西都解釋”在這里是切線相關的,但它只是在談論元編程)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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