提问人:Casey 提问时间:1/26/2022 更新时间:1/26/2022 访问量:180
是否允许使用新定义扩展 std::numbers 命名空间?
Is it allowed to extend the std::numbers namespace with new definitions?
问:
我在一个大型代码库中定义了几个数学数字常量。其中一些(但不是全部)现在在新的 C++20 标头中重复。我想把它们都放在一个地方;是否允许扩展标头以包含尚未定义的标头?<numbers>
std::numbers
答:
7赞
eerorika
1/26/2022
#1
是否允许扩展 std::numbers 标头以包含尚未定义的标头?
不可以,您不能向命名空间或其子命名空间添加定义(除非未明确禁止此类专用化)。std
相反,您可以将它们全部放在您自己的命名空间中的一个位置,并带有声明:using
namespace Casey
{
inline constexpr double missing_number = 123;
using std::numbers::e;
// ...
}
您可以使用 ,而不是单独使用每个数字,但需要注意的是,未来的标准版本可能会添加名称可能与您的名称冲突的数字,从而破坏标题的未来兼容性。using
using namespace std::numbers
评论
0赞
Casey
1/26/2022
...whose names may potentially conflict with yours...
;当我使用时,这已经发生了.我有一个在本地范围内命名的变量,并且存在冲突。是时候为所有值添加声明了!using namespace std::numbers
e
using
评论