簡體   English   中英

是否允許使用新定義擴展 std::numbers 命名空間?

[英]Is it allowed to extend the std::numbers namespace with new definitions?

我在大型代碼庫中定義了幾個數學數字常量。 其中一些(但不是全部)現在在新的 C++20 <numbers> header 中重復。 我想把它們都放在一個地方; 是否允許擴展std::numbers header 以包括尚未定義的那些?

是否允許擴展 std::numbers header 以包括尚未定義的那些?

不,您不能將定義添加到std命名空間或其子命名空間(在未明確禁止的情況下,class 模板特化除外)。

您可以使用聲明將它們全部放在您自己的命名空間中using一個位置:

namespace Casey
{
    inline constexpr double missing_number = 123;

    using std::numbers::e;
    // ...
}

您可以使用using namespace std::numbers而不是單獨using每個數字,但需要注意的是,未來的標准版本可能會添加名稱可能與您的名稱沖突的數字,從而破壞 header 的未來兼容性。

暫無
暫無

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

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