#include <type_traits>
#include <cstdint>
#include <cstddef>
template < size_t N, bool SIGNED >
class Range_Consts
{
public:
using ValueType =
typename std::conditional<
SIGNED,
typename std::conditional<
N <= 8, std::int8_t,
typename std::conditional<
N <= 16, std::int16_t,
std::int32_t
>::type
>::type,
typename std::conditional<
N <= 8, std::uint8_t,
typename std::conditional<
N <= 16, std::uint16_t,
std::uint32_t
>::type
>::type
>::type;
constexpr Range_Consts(
const ValueType value,
const ValueType minimum,
const ValueType maximum
) :
m_value(value),
m_minimum(minimum),
m_maximum(maximum)
{ }
const ValueType m_value;
const ValueType m_minimum;
const ValueType m_maximum;
};
int main()
{
static constexpr Range_Consts<32, true> MY_RANGE = { 0, -2147483648, 2147483647 };
return 0;
}