【发布时间】:2020-05-25 17:55:00
【问题描述】:
我正在浏览Alexandrescu's book,它演示了典型整数值以允许编译时调度的有用概念:
template <int Val>
struct Elastic
{
enum {V = Val};
};
template <class Object, bool isElastic>
class ImpactMomentum
{
double calc_momentum(double v_in, Elastic<true> /* */)
{
// compute elastic ...
}
double calc_momentum(double v_in, Elastic<false> /* */)
{
// compute rigid ...
}
public:
double calc_momentum(double v_in)
{
calc_velocity(v_in, Elastic<isElastic>());
}
};
是否有取代这个习语的现代 C++ 实现?当函数的参数列表中有多个标志可以切换时,可以很好地扩展。
【问题讨论】:
-
我认为没有什么可以完全否定它的用处,但是如果代码之间的差异使得它更合适,可以使用
if constexpr -
也许integral constant 就是你要找的。span>