【发布时间】:2021-01-22 12:13:30
【问题描述】:
template<typename T>
T f() {
if constexpr (std::is_same<T, int>::value) {
T t = 10;
}else {
T t;
}
return t;
}
我对上面代码的理解是f的正文要么是
int t = 10;
return t;
或
T t = // some default value for T
return t;
取决于T。在两者中都会有一个名为t 的标识符。为什么编译器还在抱怨use of undeclared identifier 't'?。
编译器在解析constexpr 语句之前是否检查未声明的标识符?
【问题讨论】:
-
想一想花括号的含义。它们的含义没有改变。
-
提示:如果你在花括号内声明一个变量,它在花括号之外是否可用?
-
if constexpr不等于#if/#else(您似乎想要)
标签: c++ if-statement constexpr undeclared-identifier