繁体   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