37 # pragma GCC system_header 38 #elif defined(BOOST_MSVC) 39 # pragma warning ( push ) 40 # pragma warning ( disable : 4018 4244 4547 4800 4804 4805 4913) 41 # if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) 42 # pragma warning ( disable : 6334) 54 template <
typename T>
T &make();
62 struct no_operator { };
67 struct any {
template <
class T> any(
T const&); };
82 struct returns_void_t { };
83 template <
typename T>
int operator,(
const T&, returns_void_t);
84 template <
typename T>
int operator,(
const volatile T&, returns_void_t);
89 template <
typename Lhs,
typename Rhs >
90 struct operator_returns_void {
94 static ::boost::type_traits::no_type returns_void(
int);
102 struct dont_care { };
104 template <
typename Lhs,
typename Rhs,
typename Ret,
bool Returns_
void >
105 struct operator_returns_Ret;
107 template <
typename Lhs,
typename Rhs >
108 struct operator_returns_Ret < Lhs, Rhs, dont_care, true > {
112 template <
typename Lhs,
typename Rhs >
113 struct operator_returns_Ret < Lhs, Rhs, dont_care, false > {
117 template <
typename Lhs,
typename Rhs >
118 struct operator_returns_Ret < Lhs, Rhs, void, true > {
122 template <
typename Lhs,
typename Rhs >
123 struct operator_returns_Ret < Lhs, Rhs, void, false > {
127 template <
typename Lhs,
typename Rhs,
typename Ret >
128 struct operator_returns_Ret < Lhs, Rhs, Ret, true > {
135 template <
typename Lhs,
typename Rhs,
typename Ret >
136 struct operator_returns_Ret < Lhs, Rhs, Ret, false > {
138 static ::boost::type_traits::no_type is_convertible_to_Ret(...);
150 struct has_operator { };
151 no_operator operator,(no_operator, has_operator);
153 template <
typename Lhs,
typename Rhs >
154 struct operator_exists {
156 static ::boost::type_traits::no_type s_check(no_operator);
169 template <
typename Lhs,
typename Rhs,
typename Ret,
bool Forb
idden_if >
172 template <
typename Lhs,
typename Rhs,
typename Ret >
173 struct trait_impl1 < Lhs, Rhs, Ret, true > {
177 template <
typename Lhs,
typename Rhs,
typename Ret >
178 struct trait_impl1 < Lhs, Rhs, Ret, false > {
184 template <
typename Rhs,
typename Ret >
185 struct trait_impl1 < void, Rhs, Ret, false > {
189 template <
typename Lhs,
typename Ret >
190 struct trait_impl1 < Lhs, void, Ret, false > {
194 template <
typename Ret >
195 struct trait_impl1 < void, void, Ret, false > {
200 template <
typename Lhs,
typename Rhs,
typename Ret >
215 template <
class Lhs,
class Rhs=Lhs,
class Ret=::boost::detail::BOOST_JOIN(BOOST_TT_TRAIT_NAME,_impl)::dont_care>
220 #if defined(BOOST_MSVC) 221 # pragma warning ( pop )
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
namespace BOOST_JOIN(BOOST_TT_TRAIT_NAME, _impl)
#define BOOST_TT_TRAIT_OP
#define BOOST_STATIC_CONSTANT(type, assignment)