gpt4 book ai didi

c++ - 带 static_assert() 的逗号运算符

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:52 24 4
gpt4 key购买 nike

当尝试使用 static_assert 作为参数来计算逗号运算符时编译失败

void fvoid() {}

int main() {
int a = (1, 2); // a=2
int b = (fvoid(), 3); // b=3

int d = ( , 5);
// ^
// error: expected primary-expression before ',' token. OK

int c = (static_assert(true), 4);
// ^~~~~~~~~~~~~
// error: expected primary-expression before 'static_assert'. Why?
}

看起来 static_assert() 在编译后甚至没有解析为 void。我没有设法在标准中找到与此相关的任何内容。有没有办法将它与逗号运算符一起使用或与其他表达式(不带分号)一起使用?

最佳答案

不,没有。语言语法要求在静态断言声明 的末尾有一个分号。

N4140 §7 [dcl.dcl]/1

static_assert-declaration:

​ ​ ​ ​static_assert ( constant-expression , string-literal ) ;

关于c++ - 带 static_assert() 的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661333/

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