Cas*_*sey 0 c++ namespaces std c++20
我在大型代码库中定义了几个数学数字常量。其中几个(但不是全部)现在在新的 C++20<numbers>标头中重复。我想把它们都集中在一处;是否允许扩展std::numbers标头以包含尚未定义的标头?
是否允许扩展 std::numbers 标头以包含尚未定义的标头?
不可以,您不能向std命名空间及其子命名空间添加定义(类模板专业化除外,在未明确禁止的情况下)。
您可以使用声明将它们全部放在您自己的命名空间中的一处using:
namespace Casey
{
inline constexpr double missing_number = 123;
using std::numbers::e;
// ...
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 ,而不是using单独使用每个数字,using namespace std::numbers但需要注意的是,未来的标准版本可能会添加名称可能与您的名称冲突的数字,从而破坏标头未来的兼容性。