我在网上找到的大多数示例都更喜欢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;
Run Code Online (Sandbox Code Playgroud)
由于我不是语言律师,我有以下问题:这些说明符是否允许使用“东方风格”?例子:
auto consteval sqr(int n) {
return n*n;
}
auto constexpr r = sqr(100); // OK
static auto constinit x = r;
Run Code Online (Sandbox Code Playgroud)
需要明确的是:我无意发动“西方”/“东方”语言战争。我不是在意见感兴趣,只是事实,尤其是在wandbox铛和gcc版本头在这个时候给出错误但没有答案constinit/ consteval。
有点。
它是decl-specifier-seq的一部分,其中的说明符可以按任何顺序排列。这是允许您编写的相同规则volatile int static long unsigned inline long const x = 1;
但它不是声明符(特别是ptr-operator)的一部分,所以你不能做int* constexpr x = nullptr;.
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |