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