【发布时间】:2019-09-20 18:04:19
【问题描述】:
我在网上找到的大多数示例都更喜欢 constexpr (C++11)、consteval 和 constinit (C++20) 的“西方风格”:
consteval auto sqr(int n) {
return n*n;
}
constexpr auto r = sqr(100); // OK
constinit static auto x = r;
由于我不是语言律师,我有以下问题: 这些说明符是否允许使用“东方风格”?示例:
auto consteval sqr(int n) {
return n*n;
}
auto constexpr r = sqr(100); // OK
static auto constinit x = r;
明确一点:我无意发动“西方”/“东方”语言战争。我对意见不感兴趣,只是在事实,尤其是目前 wandbox 上的 clang 和 gcc head 版本给出错误但在constinit / consteval 上没有答案。
【问题讨论】:
-
请注意,
constinit仍然可以伴随一个非冗余的const(而不是constexpr)。