例如:
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;
但仅限于基本情况.即使是不同的初始化者(如上所述)也会产生很大的问题.