静态constexpr全局变量

时间:2019-12-12 15:17:00

标签: c++ static global-variables const constexpr

在C ++ 17中,像这样声明全局常量之间有什么区别:

namespace ns
{
static constexpr const auto global_variable = 47;
}

还要指定const修饰符,并:

namespace ns
{
static constexpr auto global_variable = 47;
}

是否未指定const?如果是,那么在哪些情况下建议使用哪个版本的声明?

2 个答案:

答案 0 :(得分:2)

没有区别,对象类型变量上的constexpr说明符暗示const [dcl.constexpr]/9

  

在对象声明中使用的constexpr声明符将对象声明为const。 […]

请注意,static在这里也是多余的,因为const限定类型已经暗示了内部链接[basic.link]/3.2

  

具有名称空间范围的名称如果是

的名称则具有内部链接      
      
  • […]
  •   
  • 非易失性const限定类型的非内联变量,既未明确声明extern,也未声明具有外部链接[…]
  •   
  • […]
  •   

答案 1 :(得分:0)

您无需在此处使用constconstexpr表示const

相关问题