/*-----------------------------------------------------------------------------+ Copyright (c) 2008-2009: Joachim Faulhaber +------------------------------------------------------------------------------+ Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENCE.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +-----------------------------------------------------------------------------*/ #ifndef BOOST_ICL_TYPE_TRAITS_IS_DISCRETE_HPP_JOFA_100410 #define BOOST_ICL_TYPE_TRAITS_IS_DISCRETE_HPP_JOFA_100410 #include #include // For macro BOOST_STATIC_CONSTANT #include #include #ifdef BOOST_MSVC #pragma warning(push) #pragma warning(disable:4913) // user defined binary operator ',' exists but no overload could convert all operands, default built-in binary operator ',' used #endif #include #ifdef BOOST_MSVC #pragma warning(pop) #endif #include #include #include #include namespace boost{ namespace icl { template struct is_discrete { typedef is_discrete type; BOOST_STATIC_CONSTANT(bool, value = (mpl::and_ < boost::detail::is_incrementable , mpl::or_ < mpl::and_ < mpl::not_ > , is_non_floating_point > , mpl::and_ < has_rep_type , is_discrete::type> > > >::value ) ); }; }} // namespace boost icl #endif