在源文件中声明constexpr常量的正确方法是什么?我有两种方式:
constexpr int ORDER = 1;
vs
namespace {
constexpr int ORDER = 1;
} // unnamed namespace
我对将内容包装成未命名的命名空间的有用性提出质疑,原因是在全局范围内,
constexpr
意味着 static
。因此类似于头文件中写入的方式,我们可以使用 inline constexpr
来避免多个定义引起的问题。static constexpr int ORDER = 1;
假设相同的规则应该适用于源文件,因此在源文件中声明的"constexpr
变量"应该保证具有内部链接性,这使得static
只是一个重复。
这是真的吗?还有其他建议吗?
constexpr
绝对需要编译时初始化(尽管像往常一样,as-if 可以做很多事情)。 - Davis Herringinline
而不是未命名的命名空间或static
。 - Davis Herring