【发布时间】:2018-04-05 15:02:59
【问题描述】:
在cppref 中,它给出了常量初始化的语法:
static T & ref = constexpr;
static T object = constexpr;
这是我的两个问题:
第一季度
没有const 的左值引用T & 怎么会绑定到constexptr,它是常量且不可修改的?
我尝试提供一些示例但失败了:
static int& ref = 6; //error, need a `const`
constexpr int a = 6; static int& ref = a; //error, need a `const`
第二季度
常量初始化的对象必须是const/static吗?在the standard里面说:
如果具有静态或线程存储持续时间的变量或临时对象由实体的常量初始化程序初始化,则执行常量初始化。
这里标准没有指定obj为const-qualified/static-qualified。
【问题讨论】:
-
静态必须用
constexpr语句初始化,但这并不意味着静态本身必须是constexpr。这有效:static int a=6; static int& ref=a;编辑: 虽然基于措辞我认为这不再符合常量初始化的条件。 -
您的编辑似乎提出了另一个问题。也许最好提出一个新问题而不是编辑。
-
@xskxzr 但是我已经收到了这两个问题的答案。我再次对其进行了编辑以使其更加清晰。