【发布时间】:2023-04-01 10:31:02
【问题描述】:
我似乎发现了 Clang 和 GCC 不同意的地方。代码如下:
int main() {
if constexpr (2) {}
}
使用 GCC 7.4.0 成功编译,但使用 Clang 7.0.0 编译失败并显示以下错误消息:
test.cpp:3:17: error: constexpr if condition evaluates to 2, which cannot be narrowed to type 'bool'
[-Wc++11-narrowing]
if constexpr (2) {}
^
1 error generated.
cppreference 似乎没有提到“缩小”,所以这似乎是一个 Clang 错误,但我并不完全确定。如果这是任一编译器的错误,是否已报告?
【问题讨论】:
-
如果你这样做
if constexpr (!!2) {}会怎样? -
(!!2) 会起作用,但 2 也应该起作用。
-
我刚刚检查过了。
!!2与 clang 合作
标签: c++ language-lawyer c++17 implicit-conversion compiler-bug