12 #ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED 13 #define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED 17 #ifndef BOOST_IS_CONVERTIBLE 23 #if !defined(BOOST_NO_IS_ABSTRACT) 30 #if defined(__MWERKS__) 33 #if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) 36 #elif defined(BOOST_MSVC) || defined(BOOST_INTEL) 39 #endif // BOOST_IS_CONVERTIBLE 43 #ifndef BOOST_IS_CONVERTIBLE 57 #if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !(defined(BOOST_GCC) && (BOOST_GCC < 40700)) 61 # define BOOST_TT_CXX11_IS_CONVERTIBLE 63 template <
class A,
class B,
class C>
69 template<
typename From,
typename To,
bool b = or_helper<boost::is_
void<From>, boost::is_function<To>, boost::is_array<To> >::value>
76 template<
typename From,
typename To>
82 template<
typename To1>
83 static void test_aux(To1);
85 template<
typename From1,
typename To1>
86 static decltype(test_aux<To1>(boost::declval<From1>()),
one())
test(
int);
88 template<typename, typename>
92 static const
bool value = sizeof(test<From, To>(0)) == 1;
95 #elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560) 101 template <
typename From,
typename To>
104 #pragma option push -w-8074 107 template <
typename T>
struct checker
109 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(...);
114 static bool const value =
sizeof( checker<To>::_m_check(_m_from) )
119 #elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600) 123 struct any_conversion
125 template <
typename T> any_conversion(
const volatile T&);
126 template <
typename T> any_conversion(
const T&);
127 template <
typename T> any_conversion(
volatile T&);
128 template <
typename T> any_conversion(
T&);
131 template <
typename T>
struct checker
137 template <
typename From,
typename To>
142 static lvalue_type _m_from;
143 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))) 144 static bool const value =
145 sizeof( boost::detail::checker<To>::_m_check(static_cast<rvalue_type>(_m_from), 0) )
148 static bool const value =
149 sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
154 #elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \ 155 || defined(__IBMCPP__) || defined(__HP_aCC) 166 struct any_conversion
168 template <
typename T> any_conversion(
const volatile T&);
169 template <
typename T> any_conversion(
const T&);
170 template <
typename T> any_conversion(
volatile T&);
173 template <
typename T> any_conversion(
T&);
176 template <
typename From,
typename To>
179 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(any_conversion ...);
183 static lvalue_type _m_from;
185 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES 196 #elif defined(__DMC__) 198 struct any_conversion
200 template <
typename T> any_conversion(
const volatile T&);
201 template <
typename T> any_conversion(
const T&);
202 template <
typename T> any_conversion(
volatile T&);
205 template <
typename T> any_conversion(
T&);
208 template <
typename From,
typename To>
213 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(any_conversion,
float,
T);
217 static lvalue_type _m_from;
221 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES 232 #elif defined(__MWERKS__) 240 template <
typename From,
typename To,
bool FromIsFunctionRef>
241 struct is_convertible_basic_impl_aux;
243 struct any_conversion
245 template <
typename T> any_conversion(
const volatile T&);
246 template <
typename T> any_conversion(
const T&);
247 template <
typename T> any_conversion(
volatile T&);
248 template <
typename T> any_conversion(
T&);
251 template <
typename From,
typename To>
252 struct is_convertible_basic_impl_aux<From,To,false >
254 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(any_conversion ...);
258 static lvalue_type _m_from;
260 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES 271 template <
typename From,
typename To>
272 struct is_convertible_basic_impl_aux<From,To,true >
274 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(...);
278 static lvalue_type _m_from;
279 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES 290 template <
typename From,
typename To>
292 is_convertible_basic_impl_aux<
294 ::boost::is_function<typename ::boost::remove_reference<From>::type>::value
306 template <
typename From>
307 struct is_convertible_basic_impl_add_lvalue_reference
311 template <
typename From>
312 struct is_convertible_basic_impl_add_lvalue_reference<From[]>
314 typedef From
type [];
317 template <
typename From,
typename To>
320 static ::boost::type_traits::no_type
BOOST_TT_DECL _m_check(...);
323 static lvalue_type _m_from;
325 #pragma warning(push) 326 #pragma warning(disable:4244) 327 #if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000) 328 #pragma warning(disable:6334) 331 #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES 346 #endif // is_convertible_impl 350 template <
typename From,
typename To>
357 #elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551 358 template <
typename From,
typename To>
365 template <
bool trivial1,
bool trivial2,
bool abstract_target>
368 template <
class From,
class To>
378 template <
class From,
class To>
388 template <
class From,
class To>
398 template <
class From,
class To>
405 template <
typename From,
typename To>
408 #if !BOOST_WORKAROUND(__HP_aCC, < 60700) 412 #if !defined(BOOST_NO_IS_ABSTRACT) && !defined(BOOST_TT_CXX11_IS_CONVERTIBLE) 422 typedef typename selector::template rebind<From, To>
isc_binder;
426 template <
typename From,
typename To>
436 #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS 460 #endif // BOOST_NO_CV_VOID_SPECIALIZATIONS 465 #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS 476 template <
class From,
class To>
481 template <
class From,
class To>
488 #endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
typedef void(APIENTRY *GLDEBUGPROC)(GLenum source
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
boost::add_reference< T >::type type
is_convertible_impl< From, To > type
is_convertible_impl_select< ::boost::is_arithmetic< From >::value,::boost::is_arithmetic< To >::value, false > selector
#define BOOST_STATIC_CONSTANT(type, assignment)
boost::type_traits_detail::add_rvalue_reference_imp< T >::type type
selector::template rebind< From, To > isc_binder