Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
has_xxx.hpp File Reference
#include <boost/mpl/bool.hpp>
#include <boost/mpl/aux_/na_spec.hpp>
#include <boost/mpl/aux_/type_wrapper.hpp>
#include <boost/mpl/aux_/yes_no.hpp>
#include <boost/mpl/aux_/config/gcc.hpp>
#include <boost/mpl/aux_/config/has_xxx.hpp>
#include <boost/mpl/aux_/config/msvc_typename.hpp>
#include <boost/mpl/aux_/config/msvc.hpp>
#include <boost/mpl/aux_/config/static_constant.hpp>
#include <boost/mpl/aux_/config/workaround.hpp>
#include <boost/preprocessor/array/elem.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/control/if.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
Include dependency graph for has_xxx.hpp:
This graph shows which files directly or indirectly include this file:

Macros

#define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(trait, name, default_)
 
#define BOOST_MPL_HAS_XXX_TRAIT_DEF(name)   BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false) \
 
#define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES   0
 
#define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION   0
 
#define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE   0
 
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)   BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _introspect) \
 
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n)   BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _substitute), n) \
 
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)   BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _test) \
 
#define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args)
 
#define BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro)
 
#define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro)
 
#define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z, n, args)
 
#define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro)
 
#define BOOST_MPL_HAS_MEMBER_TEST(args)
 
#define BOOST_MPL_HAS_MEMBER_INTROSPECT(args, substitute_macro, member_macro)
 
#define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION(args, introspect_macro, substitute_macro, member_macro)
 
#define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE(args, substitute_macro, member_macro)
 
#define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_)
 
#define BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name)
 

Macro Definition Documentation

#define BOOST_MPL_HAS_MEMBER_ACCEPT (   args,
  member_macro 
)
Value:
, args \
) \
#define BOOST_PP_REPEAT
Definition: repeat.hpp:29
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_PP_ARRAY_ELEM(i, array)
Definition: elem.hpp:25
#define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT(z, n, args)
Definition: has_xxx.hpp:365
#define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION (   args,
  introspect_macro,
  substitute_macro,
  member_macro 
)
Value:
template< \
typename T \
, typename fallback_ \
= boost::mpl::bool_< BOOST_PP_ARRAY_ELEM(3, args) > \
> \
class BOOST_PP_ARRAY_ELEM(0, args) { \
introspect_macro(args, substitute_macro, member_macro) \
public: \
static const bool value \
T \
}; \
T
Definition: mem_fn_cc.hpp:25
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_PP_ARRAY_ELEM(i, array)
Definition: elem.hpp:25
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)
Definition: has_xxx.hpp:319
typed_value< T > * value()
Creates a typed_value instance.
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_MPL_HAS_MEMBER_INTROSPECT (   args,
  substitute_macro,
  member_macro 
)
Value:
template< typename U > \
); \
typedef boost::mpl::bool_< value > type; \
}; \
#define BOOST_MPL_HAS_MEMBER_ACCEPT(args, member_macro)
Definition: has_xxx.hpp:375
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME(args)
Definition: has_xxx.hpp:319
#define BOOST_MPL_HAS_MEMBER_TEST(args)
Definition: has_xxx.hpp:394
#define BOOST_MPL_HAS_MEMBER_REJECT(args, member_macro)
Definition: has_xxx.hpp:352
typed_value< T > * value()
Creates a typed_value instance.
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_STATIC_CONSTANT(type, assignment)
Definition: suffix.hpp:394
#define BOOST_MPL_HAS_MEMBER_SUBSTITUTE(args, substitute_macro)
Definition: has_xxx.hpp:343
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_NAME (   args)    BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _introspect) \
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME (   args,
  n 
)    BOOST_PP_CAT(BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _substitute), n) \
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME (   args)    BOOST_PP_CAT(BOOST_PP_ARRAY_ELEM(0, args) , _test) \
#define BOOST_MPL_HAS_MEMBER_MULTI_ACCEPT (   z,
  n,
  args 
)
Value:
template< typename V > \
boost::mpl::aux::type_wrapper< V > const volatile* \
>* = 0 \
); \
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)
Definition: has_xxx.hpp:327
#define n
Definition: register_functions_iterate.hpp:7
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define template
Definition: instances.hpp:126
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n)
Definition: has_xxx.hpp:323
#define BOOST_PP_ARRAY_ELEM(i, array)
Definition: elem.hpp:25
#define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE (   z,
  n,
  args 
)
Value:
template< \
template< BOOST_PP_ENUM_PARAMS(BOOST_PP_INC(n), typename V) > class V \
> \
}; \
#define n
Definition: register_functions_iterate.hpp:7
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_SUBSTITUTE_NAME(args, n)
Definition: has_xxx.hpp:323
#define BOOST_MPL_HAS_MEMBER_REJECT (   args,
  member_macro 
)
Value:
template< typename V > \
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)
Definition: has_xxx.hpp:327
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_MPL_HAS_MEMBER_SUBSTITUTE (   args,
  substitute_macro 
)
Value:
, args \
) \
#define BOOST_PP_REPEAT
Definition: repeat.hpp:29
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_PP_ARRAY_ELEM(i, array)
Definition: elem.hpp:25
#define BOOST_MPL_HAS_MEMBER_MULTI_SUBSTITUTE(z, n, args)
Definition: has_xxx.hpp:335
#define BOOST_MPL_HAS_MEMBER_TEST (   args)
Value:
== sizeof(boost::mpl::aux::yes_tag) \
#define BOOST_MPL_HAS_MEMBER_INTROSPECTION_TEST_NAME(args)
Definition: has_xxx.hpp:327
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE (   args,
  substitute_macro,
  member_macro 
)
Value:
args \
, substitute_macro \
, member_macro \
) \
#define BOOST_MPL_HAS_MEMBER_INTROSPECT(args, substitute_macro, member_macro)
Definition: has_xxx.hpp:418
#define BOOST_MPL_HAS_MEMBER_IMPLEMENTATION(args, introspect_macro, substitute_macro, member_macro)
Definition: has_xxx.hpp:433
detail::keywords< 1 > args(char const *name)
Definition: args.hpp:156
#define BOOST_MPL_HAS_XXX_NEEDS_TEMPLATE_SFINAE   0
#define BOOST_MPL_HAS_XXX_NO_EXPLICIT_TEST_FUNCTION   0
#define BOOST_MPL_HAS_XXX_NO_WRAPPED_TYPES   0
#define BOOST_MPL_HAS_XXX_TEMPLATE_DEF (   name)
Value:
BOOST_PP_CAT(has_, name), name, false \
) \
const int name
Definition: gzip.hpp:94
#define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(trait, name, default_)
Definition: has_xxx.hpp:609
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
#define BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF (   trait,
  name,
  default_ 
)
Value:
( 4, ( trait, name, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, default_ ) ) \
, BOOST_MPL_HAS_MEMBER_TEMPLATE_SUBSTITUTE_PARAMETER \
, BOOST_MPL_HAS_MEMBER_TEMPLATE_ACCESS \
) \
#define BOOST_MPL_HAS_MEMBER_WITH_FUNCTION_SFINAE(args, substitute_macro, member_macro)
Definition: has_xxx.hpp:455
const int name
Definition: gzip.hpp:94
#define BOOST_MPL_LIMIT_METAFUNCTION_ARITY
Definition: arity.hpp:18
#define BOOST_MPL_HAS_XXX_TRAIT_DEF (   name)    BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(has_,name), name, false) \
#define BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF (   trait,
  name,
  default_ 
)
Value:
template< typename T, typename fallback_ = boost::mpl::bool_<default_> > \
struct trait \
{ \
struct gcc_3_2_wknd \
{ \
template< typename U > \
static boost::mpl::aux::yes_tag test( \
boost::mpl::aux::type_wrapper<U> const volatile* \
, boost::mpl::aux::type_wrapper<BOOST_MSVC_TYPENAME U::name>* = 0 \
); \
\
static boost::mpl::aux::no_tag test(...); \
}; \
\
typedef boost::mpl::aux::type_wrapper<T> t_; \
sizeof(gcc_3_2_wknd::test(static_cast<t_*>(0))) \
== sizeof(boost::mpl::aux::yes_tag) \
); \
typedef boost::mpl::bool_<value> type; \
}; \
test_result< typename Range::const_iterator > test(Range test_file, F gen, char const *demarcation="<**expected**>", char const *re_prefix="<%", char const *re_suffix="%>")
typed_value< T > * value()
Creates a typed_value instance.
adjacency_iterator typedef T::adjacency_iterator type
Definition: graph_traits.hpp:42
#define BOOST_STATIC_CONSTANT(type, assignment)
Definition: suffix.hpp:394