From 1c5ba28f353f0967aa6faa1539ddaa71020acb07 Mon Sep 17 00:00:00 2001 From: q66 Date: Wed, 13 Jan 2016 20:46:16 +0000 Subject: [PATCH] replace some traits with c++14 style nice definitions --- ostd/type_traits.hh | 38 +++++++++----------------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/ostd/type_traits.hh b/ostd/type_traits.hh index b6518ac..8a026e3 100644 --- a/ostd/type_traits.hh +++ b/ostd/type_traits.hh @@ -110,13 +110,8 @@ struct Not: IntegralConstant {}; /* type equality */ -namespace detail { - template struct IsSameBase : False {}; - template struct IsSameBase: True {}; -} - -template -constexpr bool IsSame = detail::IsSameBase::value; +template constexpr bool IsSame = false; +template constexpr bool IsSame = true; /* is void */ @@ -171,14 +166,9 @@ constexpr bool IsFloatingPoint = detail::IsFloatingPointBase>::value /* is array */ -namespace detail { - template struct IsArrayBase : False {}; - template struct IsArrayBase: True {}; - template struct IsArrayBase: True {}; -} - -template -constexpr bool IsArray = detail::IsArrayBase::value; +template constexpr bool IsArray = false; +template constexpr bool IsArray = true; +template constexpr bool IsArray = true; /* is pointer */ @@ -192,23 +182,13 @@ constexpr bool IsPointer = detail::IsPointerBase>::value; /* is lvalue reference */ -namespace detail { - template struct IsLvalueReferenceBase : False {}; - template struct IsLvalueReferenceBase: True {}; -} - -template -constexpr bool IsLvalueReference = detail::IsLvalueReferenceBase::value; +template constexpr bool IsLvalueReference = false; +template constexpr bool IsLvalueReference = true; /* is rvalue reference */ -namespace detail { - template struct IsRvalueReferenceBase : False {}; - template struct IsRvalueReferenceBase: True {}; -} - -template -constexpr bool IsRvalueReference = detail::IsRvalueReferenceBase::value; +template constexpr bool IsRvalueReference = false; +template constexpr bool IsRvalueReference = true; /* is reference */