在C ++ 17中,像这样声明全局常量之间有什么区别:
namespace ns
{
static constexpr const auto global_variable = 47;
}
还要指定const
修饰符,并:
namespace ns
{
static constexpr auto global_variable = 47;
}
是否未指定const
?如果是,那么在哪些情况下建议使用哪个版本的声明?
答案 0 :(得分:2)
没有区别,对象类型变量上的constexpr
说明符暗示const
[dcl.constexpr]/9:
在对象声明中使用的
constexpr
声明符将对象声明为const
。 […]
请注意,static
在这里也是多余的,因为const限定类型已经暗示了内部链接[basic.link]/3.2:
具有名称空间范围的名称如果是
的名称则具有内部链接
- […]
- 非易失性const限定类型的非内联变量,既未明确声明
extern
,也未声明具有外部链接[…]- […]
答案 1 :(得分:0)
您无需在此处使用const
,constexpr
表示const
。