Header file types/real.hpp

namespace brigand
{
    template <typename RealType, typename Type, Type Value>
    struct real_
    : std::integral_constant<Type, Value>
    {
        using value_type = RealType;
        
        using parent = std::integral_constant<Type, Value>;
        
        operator value_type() const;
    };
    
    template <std::uint32_t Value>
    struct single_
    : real_<float, std::uint32_t, Value>
    {
    };
    
    template <std::uint64_t Value>
    struct double_
    : real_<double, std::uint64_t, Value>
    {
    };
}