所以我知道我不能使用 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
的简单方法吗?
最佳答案
没有类型 ratio
。 std::ratio
是一个类模板。这个模板本身有分子和分母作为模板参数。
如果你想使用 std::ratio
可以这样做:
template<class T>
float foo(const float param) {
return param * T::num / static_cast<float>(T::den);
}
auto x = foo<std::ratio<4,7>>(42);
关于c++ - 我如何使用比率而不是 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800279/