是否允许使用新定义扩展 std::numbers 命名空间?
Is it allowed to extend the std::numbers namespace with new definitions?
我在大型代码库中定义了几个数学数字常量。其中一些(但不是全部)现在在新的 C++20 <numbers>
header 中重复了。我想把它们都放在一个地方;是否允许扩展 std::numbers
header 以包含尚未定义的内容?
is it allowed to extend the std::numbers header to include the ones not already defined?
不,您不能向 std
命名空间及其子命名空间添加定义(class 模板特化除外,在没有明确禁止的情况下)。
您可以使用 using
声明将它们全部放在您自己的命名空间中的一个位置:
namespace Casey
{
inline constexpr double missing_number = 123;
using std::numbers::e;
// ...
}
您可以使用 using namespace std::numbers
,而不是单独 using
每个数字,但需要注意的是,未来的标准版本可能会添加名称可能与您的冲突的数字,从而破坏您的未来兼容性header.
我在大型代码库中定义了几个数学数字常量。其中一些(但不是全部)现在在新的 C++20 <numbers>
header 中重复了。我想把它们都放在一个地方;是否允许扩展 std::numbers
header 以包含尚未定义的内容?
is it allowed to extend the std::numbers header to include the ones not already defined?
不,您不能向 std
命名空间及其子命名空间添加定义(class 模板特化除外,在没有明确禁止的情况下)。
您可以使用 using
声明将它们全部放在您自己的命名空间中的一个位置:
namespace Casey
{
inline constexpr double missing_number = 123;
using std::numbers::e;
// ...
}
您可以使用 using namespace std::numbers
,而不是单独 using
每个数字,但需要注意的是,未来的标准版本可能会添加名称可能与您的冲突的数字,从而破坏您的未来兼容性header.