xref: /openbmc/telemetry/src/utils/conversion.hpp (revision d960e1f37e72115fdd8ec0163c99bb19e0487b91)
1 #pragma once
2 
3 #include <stdexcept>
4 
5 namespace utils
6 {
7 
8 template <class T, T first, T last>
9 inline T toEnum(int x)
10 {
11     if (x < static_cast<decltype(x)>(first) ||
12         x > static_cast<decltype(x)>(last))
13     {
14         throw std::out_of_range("Value is not in range of enum");
15     }
16     return static_cast<T>(x);
17 }
18 } // namespace utils
19