gpt4 book ai didi

c++ - C++20 中允许 east constexpr/constinit/consteval 吗?

转载 作者:行者123 更新时间:2023-12-02 07:03:10 25 4
gpt4 key购买 nike

我在网上找到的大多数例子都更喜欢 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;

需要明确的是:我无意发起一场“西方”/“东方”语言 war 。我对意见不感兴趣,只对事实感兴趣,尤其是 wandbox 上的 clang 和 gcc head 版本此时给出错误,但在 constinit 上没有答案。/consteval .

最佳答案

有点。

它是 decl-specifier-seq 的一部分,其中的说明符可以按任何顺序排列。同样的规则允许您编写 volatile int static long unsigned inline long const x = 1;

但它不是声明符的一部分(特别是ptr运算符),因此你不能执行int* constexpr x = nullptr;.

关于c++ - C++20 中允许 east constexpr/constinit/consteval 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58033255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com