So I have this little template class:
template <typename T, typename std::enable_if<std::is_arithmetic<T>{} || std::is_same<T, std::chrono::duration<int64_t, std::nano>>{}, int>::type = 0>
class Accumulator
{
public:
void Sample(const T value) {
value_ = Convert(value);
}
private:
float value_;
}
It needs to work for all arithmetic types and std::chrono::duration<int64_t, std::nano> type. There is some math inside to be done, so all the passed values to Sample() method will have to be converted to float.
What is a good elegant way to write this Convert() function? I've tried writing an entire version of Accumulator for std::chrono::duration<int64_t, std::nano> type, but it looked like a code duplication. Making specific Convert(std::chrono::duration<int64_t, std::nano> value) didn't work with a different version Convert(T value).
C++14 on gcc 9.3.0.
Aucun commentaire:
Enregistrer un commentaire