diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:33:54 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2016-10-06 10:36:09 +0900 |
commit | d9ec475d945d3035377a0d89ed42e382d8988891 (patch) | |
tree | 34aff2cee4b209906243ab5499d61f3edee2982f /boost/type_traits/is_enum.hpp | |
parent | 71d216b90256936a9638f325af9bc69d720e75de (diff) | |
download | boost-d9ec475d945d3035377a0d89ed42e382d8988891.tar.gz boost-d9ec475d945d3035377a0d89ed42e382d8988891.tar.bz2 boost-d9ec475d945d3035377a0d89ed42e382d8988891.zip |
Imported Upstream version 1.60.0
Change-Id: Ie709530d6d5841088ceaba025cbe175a4ef43050
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/type_traits/is_enum.hpp')
-rw-r--r-- | boost/type_traits/is_enum.hpp | 56 |
1 files changed, 17 insertions, 39 deletions
diff --git a/boost/type_traits/is_enum.hpp b/boost/type_traits/is_enum.hpp index 7929c962a5..eada480a65 100644 --- a/boost/type_traits/is_enum.hpp +++ b/boost/type_traits/is_enum.hpp @@ -12,6 +12,7 @@ #define BOOST_TT_IS_ENUM_HPP_INCLUDED #include <boost/type_traits/intrinsics.hpp> +#include <boost/type_traits/integral_constant.hpp> #ifndef BOOST_IS_ENUM #include <boost/type_traits/add_reference.hpp> #include <boost/type_traits/is_arithmetic.hpp> @@ -21,16 +22,13 @@ #ifdef __GNUC__ #include <boost/type_traits/is_function.hpp> #endif -#include <boost/type_traits/config.hpp> +#include <boost/type_traits/detail/config.hpp> #if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION) # include <boost/type_traits/is_class.hpp> # include <boost/type_traits/is_union.hpp> #endif #endif -// should be the last #include -#include <boost/type_traits/detail/bool_trait_def.hpp> - namespace boost { #ifndef BOOST_IS_ENUM @@ -43,11 +41,7 @@ namespace detail { template <typename T> struct is_class_or_union { - BOOST_STATIC_CONSTANT(bool, value = - (::boost::type_traits::ice_or< - ::boost::is_class<T>::value - , ::boost::is_union<T>::value - >::value)); + BOOST_STATIC_CONSTANT(bool, value = ::boost::is_class<T>::value || ::boost::is_union<T>::value); }; #else @@ -94,8 +88,8 @@ template <> struct is_enum_helper<false> { template <typename T> struct type - : public ::boost::is_convertible<typename boost::add_reference<T>::type,::boost::detail::int_convertible> { + static const bool value = ::boost::is_convertible<typename boost::add_reference<T>::type, ::boost::detail::int_convertible>::value; }; }; @@ -112,34 +106,28 @@ template <typename T> struct is_enum_impl // order to correctly deduce that noncopyable types are not enums // (dwa 2002/04/15)... BOOST_STATIC_CONSTANT(bool, selector = - (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value - , ::boost::is_reference<T>::value - , ::boost::is_function<T>::value - , is_class_or_union<T>::value - , is_array<T>::value - >::value)); + || ::boost::is_reference<T>::value + || ::boost::is_function<T>::value + || is_class_or_union<T>::value + || is_array<T>::value); #else // ...however, not checking is_class_or_union on non-conforming // compilers prevents a dependency recursion. BOOST_STATIC_CONSTANT(bool, selector = - (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value - , ::boost::is_reference<T>::value - , ::boost::is_function<T>::value - , is_array<T>::value - >::value)); + || ::boost::is_reference<T>::value + || ::boost::is_function<T>::value + || is_array<T>::value); #endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION #else // !defined(__GNUC__): BOOST_STATIC_CONSTANT(bool, selector = - (::boost::type_traits::ice_or< ::boost::is_arithmetic<T>::value - , ::boost::is_reference<T>::value - , is_class_or_union<T>::value - , is_array<T>::value - >::value)); + || ::boost::is_reference<T>::value + || is_class_or_union<T>::value + || is_array<T>::value); #endif @@ -155,34 +143,24 @@ template <typename T> struct is_enum_impl BOOST_STATIC_CONSTANT(bool, value = helper::value); }; -// these help on compilers with no partial specialization support: -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void,false) -#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const,false) -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void volatile,false) -BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC1(is_enum,void const volatile,false) -#endif - } // namespace detail -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,::boost::detail::is_enum_impl<T>::value) +template <class T> struct is_enum : public integral_constant<bool, ::boost::detail::is_enum_impl<T>::value> {}; #else // __BORLANDC__ // // buggy is_convertible prevents working // implementation of is_enum: -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,false) +template <class T> struct is_enum : public integral_constant<bool, false> {}; #endif #else // BOOST_IS_ENUM -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_enum,T,BOOST_IS_ENUM(T)) +template <class T> struct is_enum : public integral_constant<bool, BOOST_IS_ENUM(T)> {}; #endif } // namespace boost -#include <boost/type_traits/detail/bool_trait_undef.hpp> - #endif // BOOST_TT_IS_ENUM_HPP_INCLUDED |