所以我知道我不能使用float
作为模板参数:
template<float T>
float foo(const float param) { return param + T; }
我听说ratio
可以用作替代方法。我想做这样的事情:
template<ratio T>
float foo(const float param) { return param * T::num / static_cast<float>(T::den); }
很遗憾,ratio
不是完整的类型,因此根本无法使用。最后,我不得不问,为什么不这样做:
template<int Num, int Denom>
float foo(const float param) { return param * Num / static_cast<float>(Denom); }
我更喜欢使用ratio
,因为它可以更清楚地表示我要执行的操作。有人可以为我提供一种使用ratio
的简单方法吗?
答案 0 :(得分:2)
没有类型180$
。 ratio
是一个类模板。该模板本身具有分子和分母作为模板参数。
如果您想使用std::ratio
,可以这样做:
std::ratio