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