diff options
-rw-r--r-- | gsl/gsl_byte | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/gsl/gsl_byte b/gsl/gsl_byte index bee1092..ab5e4e3 100644 --- a/gsl/gsl_byte +++ b/gsl/gsl_byte @@ -26,7 +26,7 @@ // constexpr is not understood #pragma push_macro("constexpr") -#define constexpr /*constexpr*/ +#define constexpr /*constexpr*/ // noexcept is not understood #pragma push_macro("noexcept") @@ -45,25 +45,25 @@ enum class byte : unsigned char }; template <class IntegerType, class = std::enable_if_t<std::is_integral<IntegerType>::value>> -constexpr byte& operator<<=(byte& b, IntegerType shift) noexcept +inline constexpr byte& operator<<=(byte& b, IntegerType shift) noexcept { return b = byte(static_cast<unsigned char>(b) << shift); } template <class IntegerType, class = std::enable_if_t<std::is_integral<IntegerType>::value>> -constexpr byte operator<<(byte b, IntegerType shift) noexcept +inline constexpr byte operator<<(byte b, IntegerType shift) noexcept { return byte(static_cast<unsigned char>(b) << shift); } template <class IntegerType, class = std::enable_if_t<std::is_integral<IntegerType>::value>> -constexpr byte& operator>>=(byte& b, IntegerType shift) noexcept +inline constexpr byte& operator>>=(byte& b, IntegerType shift) noexcept { return b = byte(static_cast<unsigned char>(b) >> shift); } template <class IntegerType, class = std::enable_if_t<std::is_integral<IntegerType>::value>> -constexpr byte operator>>(byte b, IntegerType shift) noexcept +inline constexpr byte operator>>(byte b, IntegerType shift) noexcept { return byte(static_cast<unsigned char>(b) >> shift); } @@ -101,13 +101,13 @@ inline constexpr byte operator^(byte l, byte r) noexcept inline constexpr byte operator~(byte b) noexcept { return byte(~static_cast<unsigned char>(b)); } template <class IntegerType, class = std::enable_if_t<std::is_integral<IntegerType>::value>> -constexpr IntegerType to_integer(byte b) noexcept +inline constexpr IntegerType to_integer(byte b) noexcept { return {b}; } template<bool E, typename T> -constexpr byte to_byte_impl(T t) noexcept +inline constexpr byte to_byte_impl(T t) noexcept { static_assert( E, @@ -117,19 +117,19 @@ constexpr byte to_byte_impl(T t) noexcept return static_cast<byte>(t); } template<> -constexpr byte to_byte_impl<true, unsigned char>(unsigned char t) noexcept +inline constexpr byte to_byte_impl<true, unsigned char>(unsigned char t) noexcept { return byte(t); } template<typename T> -constexpr byte to_byte(T t) noexcept +inline constexpr byte to_byte(T t) noexcept { return to_byte_impl<std::is_same<T, unsigned char>::value, T>(t); } template <int I> -constexpr byte to_byte() noexcept +inline constexpr byte to_byte() noexcept { static_assert(I >= 0 && I <= 255, "gsl::byte only has 8 bits of storage, values must be in range 0-255"); return static_cast<byte>(I); |