Warning, file /include/boost/type_erasure/relaxed.hpp was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 #ifndef BOOST_TYPE_ERASURE_RELAXED_HPP_INCLUDED
0012 #define BOOST_TYPE_ERASURE_RELAXED_HPP_INCLUDED
0013
0014 #include <boost/mpl/vector.hpp>
0015 #include <boost/mpl/bool.hpp>
0016 #include <boost/mpl/is_sequence.hpp>
0017 #include <boost/mpl/find_if.hpp>
0018 #include <boost/mpl/not.hpp>
0019 #include <boost/mpl/end.hpp>
0020 #include <boost/type_traits/is_same.hpp>
0021
0022 namespace boost {
0023 namespace type_erasure {
0024
0025 template<class T>
0026 struct is_relaxed;
0027
0028 namespace detail {
0029
0030 template<class T>
0031 struct is_relaxed_impl :
0032 ::boost::mpl::not_<
0033 typename ::boost::is_same<
0034 typename ::boost::mpl::find_if<
0035 T,
0036 ::boost::type_erasure::is_relaxed< ::boost::mpl::_1>
0037 >::type,
0038 typename ::boost::mpl::end<T>::type
0039 >::type
0040 >::type
0041 {};
0042
0043 }
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 struct relaxed : ::boost::mpl::vector0<> {};
0069
0070
0071
0072
0073
0074 template<class Concept>
0075 struct is_relaxed :
0076 ::boost::mpl::eval_if< ::boost::mpl::is_sequence<Concept>,
0077 ::boost::type_erasure::detail::is_relaxed_impl<Concept>,
0078 ::boost::mpl::false_
0079 >::type
0080 {};
0081
0082
0083 template<>
0084 struct is_relaxed< ::boost::type_erasure::relaxed> :
0085 ::boost::mpl::true_
0086 {};
0087
0088 }
0089 }
0090
0091 #endif