例如:
void foo()
{
if constexpr (...)
int x = 5;
else
double x = 10.0;
bar(x); // calls different overloads of bar with different values
}
这在 D lang 中很常见,但我没有找到有关 C++17 的信息。
当然,可以使用类似的东西
std::conditional<..., int, double>::type x;
但仅限于基本情况。即使是不同的初始化器(如上)也会产生大问题。