ge4*_*mue 2 c++ c++17 if-constexpr
我有以下代码
static constexpr bool condition = true;
int square(int num) {
if constexpr (condition) {
return num * num;
} else {
x
return num;
}
}
int main() {
return square(3);
}
Run Code Online (Sandbox Code Playgroud)
用编译
-std = gnu ++ 17
我的假设
if constexpr (condition)
Run Code Online (Sandbox Code Playgroud)
是在编译过程中
} else {
x
return num;
}
Run Code Online (Sandbox Code Playgroud)
被丢弃,我没有得到关于未定义的错误
X
我的理解是错误的,这个“如果constexpr”是这样的
#ifdef CONDITION
return num * num;
#else
x
return num;
#endif
Run Code Online (Sandbox Code Playgroud)
如何修改此代码以进行编译?
谢谢您的帮助
如何修改此代码以进行编译?
要修复代码,只需使用删除行x。
我的理解是否错误,因为这个“如果constexpr”类似于[...]
是的,您的理解是错误的。来自cppreference:
在模板之外,对废弃的语句进行了全面检查。
if constexpr不能替代#if预处理指令。
这意味着if constexpr块中的每个分支都必须是有效的C ++,即使它永远不会被使用。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |