东康斯泰克普/康斯蒂尼特/康斯特瓦尔在C++20 中允许吗?
Is east constexpr / constinit / consteval allowed in C++20?
我在网上找到的大多数例子都更喜欢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;
需要明确的是:我无意发动一场"西方"/"东方"的语言战争。我对意见不感兴趣,只对事实感兴趣,尤其是此时魔杖盒上的 clang 和 gcc 头版本给出了错误,但没有关于constinit
/consteval
的答案.
有点。
它是decl-specifier-seq的一部分,其中的说明符可以按任何顺序排列。这是允许您编写volatile int static long unsigned inline long const x = 1;
的相同规则
但它不是声明符的一部分(特别是ptr 运算符(,所以你不能int* constexpr x = nullptr;
.
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 从不同线程使用int64的不同字节安全吗
- C/C++编译器通常会删除重复的库吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 你能重载对象变量名本身返回的内容吗
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有人能分解一下这个c++模板的语法吗
- std::原子加载和存储都需要吗
- 为什么不;名字在地图上是按顺序排列的吗
- C++:将控制台输出存储在宏中更好吗
- 宏"断言"会在 C++20 中删除吗?
- std::make_array的目的是什么?C++20 还需要吗?
- 我可以在using声明中正确使用C++20概念吗
- 东康斯泰克普/康斯蒂尼特/康斯特瓦尔在C++20 中允许吗?
- 在类中使用 C++20 中的"使用枚举"可能吗?
- C++20 'char8_t'和我们以前的"字符"一样吗?
- 使用SSD时,使用一个线程写入20个不同的文件比使用20个线程更好吗