diff --git a/include/utl/meta/if.h b/include/utl/meta/if.h index dc47928..ccc9a80 100644 --- a/include/utl/meta/if.h +++ b/include/utl/meta/if.h @@ -53,10 +53,6 @@ namespace utl { template // Partial specialization for false. struct if_ { }; - //! Alias template for if_ - template - using if_t = typename if_<_C, _Tp>::type; - //! @} } //! @} diff --git a/include/utl/meta/sfinae.h b/include/utl/meta/sfinae.h index 22d0f34..e58b9e5 100644 --- a/include/utl/meta/sfinae.h +++ b/include/utl/meta/sfinae.h @@ -54,71 +54,34 @@ namespace utl { using void_t = typename void_t_impl<_Ts...>::type; //! @} + //! Alias template for if_ + template + using if_t = typename if_<_C, _Tp>::type; + + //! Publicly recognized alias template for if_ + template + using enable_if_t = typename if_<_C, _Tp>::type; + + //! Uniform alias template for if_ + template + using use_if_t = typename if_<_C, _Tp>::type; //! If same type resolves to _Ret, else SFINAE - //! @{ template - struct use_if_same_ { - using type = if_t < - same_<_T1, _T2>::value, - _Ret - >; - }; - template - using use_if_same_t = typename use_if_same_<_T1, _T2, _Ret>::type; - //! @} - + using use_if_same_t = typename if_::value, _Ret>::type; //! If not same type resolves to _Ret, else SFINAE - //! @{ - template - struct use_if_not_same_ { - using type = if_t < - !same_<_T1, _T2>::value, - _Ret - >; - }; template - using use_if_not_same_t = typename use_if_not_same_<_T1, _T2, _Ret>::type; - //! @} - + using use_if_not_same_t = typename if_::value, _Ret>::type; //! If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE - //! @{ - template - struct use_if_any_ { - using type = if_t < - or_<_T1, _T2>::value, - _Ret - >; - }; template - using use_if_any_t = typename use_if_any_<_T1, _T2, _Ret>::type; - //! @} - + using use_if_any_t = typename if_::value, _Ret>::type; //! If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE - //! @{ template - struct use_if_both_ { - using type = if_t < - and_<_T1, _T2>::value, - _Ret - >; - }; - template - using use_if_both_t = typename use_if_both_<_T1, _T2, _Ret>::type; - //! @} + using use_if_both_t = typename if_::value, _Ret>::type; - //! Publicly recognized alias template for if_t - template - using enable_if_t = typename if_<_C, _Tp>::type; - - //! Uniform use_ style alias template for if_t - //!@{ - template - using use_if_t = typename if_<_C, _Tp>::type; - //!@{ } //! @}