【发布时间】:2020-08-18 13:08:04
【问题描述】:
为什么这段代码在编译时会出错?我对“if constexpr”的了解(以及this)表明不应编译else 块。
if constexpr (true) {
int a = 10;
} else {
int b = 10
}
错误是:
error: expected ‘,’ or ‘;’ before ‘}’ token
使用的编译器:g++ 版本 7.5.0
编译时我使用了 -std=c++17 标志。
P.S. 缺少的 ';'是故意的,只是为了检查else是否正在编译。
【问题讨论】:
-
也许您应该明确指出缺少的
;是有目的的;至少这似乎是你对我的意图(我想测试else块是否正在编译)。 -
“不编译”(或实例化)和“不解析”之间存在天壤之别。
-
这是一个完全合理的问题,代码sn-p的意图很明确。
标签: c++ c++17 constexpr if-constexpr