在引用定义中使用 constexpr 和 const
Posted
技术标签:
【中文标题】在引用定义中使用 constexpr 和 const【英文标题】:Use of constexpr and const in reference definition 【发布时间】:2017-04-21 05:26:20 【问题描述】:我在Quora 上看到在 C++ 中将引用变量声明为常量。
static constexpr const int& r = 3;
那么,为什么constexpr
和const
都在单个语句中使用?
这种陈述的目的是什么?
【问题讨论】:
实用阅读:***.com/questions/14116003/… 目的是什么?我认为是示范。 类似问题,***.com/questions/28614591/…。constexpr
适用于引用,const int
是引用的东西,它们有不同的含义
【参考方案1】:
const
变量是初始化后无法修改的变量(例如const int a = 1
)。
constexpr
变量是constant expressions,可以在编译时使用。将 constexpr 用于变量声明意味着 const。
但是,在此声明中,const
适用于 int,而 constexpr
适用于 const int&
(对 const int 的引用)。
【讨论】:
"这意味着const
是多余的" 几乎没有。
除非我记错了,因为 C++14 constexpr
不再暗示 const
。
@AndyProwl 这是针对成员函数的。
尝试从问题中的代码中删除const
。它不会编译。
@M.M 显然,如果您还更改了初始化程序,则可以删除 const
。我的观点是:说const
是多余的答案是错误的,因为删除const
改变了含义。以上是关于在引用定义中使用 constexpr 和 const的主要内容,如果未能解决你的问题,请参考以下文章