#include <iostream>
int foo(int x) {
if constexpr (std::is_same_v<decltype(x), std::string>) {
x = std::string();
}
}
int main(void)
{ return 0; }
此代码不能在 GCC 7 和 Clang 5 上编译:
error: cannot convert ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’ to ‘int’ in assignment
x = std::string();
由于引用的行位于应该评估为 的 constexpr if 分支中false
,所以程序不应该编译得很好吗?