Back to Arangodb

BOOST_MPL_HAS_XXX_TEMPLATE_DEF

3rdParty/boost/1.78.0/libs/mpl/doc/refmanual/has-xxx-template-def.html

3.12.9.13.8 KB
Original Source

| Prev Next | Back Along | Up Home | Full TOC | Front Page / Macros / Introspection / BOOST_MPL_HAS_XXX_TEMPLATE_DEF |

BOOST_MPL_HAS_XXX_TEMPLATE_DEF

Synopsis

#define[BOOST\_MPL\_HAS\_XXX\_TEMPLATE\_DEF](./has-xxx-template-def.html)(name) \_unspecified token sequence_\
/**/

Description

Expands into the definition of a boolean Metafunction has_name such that for any type x has_name<x>::value == true if and only if x is a class type and has a nested template member x::template name with no more than BOOST_MPL_LIMIT_METAFUNCTION_ARITY parameters.

On deficient compilers not capable of performing the detection, has_name<x>::value is always false. A boolean configuration macro, BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE, is provided to signal or override the "deficient" status of a particular compiler.

[Note: BOOST_MPL_HAS_XXX_TEMPLATE_DEF is a simplified front end to the BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF introspection macro — end note]

#include <[boost/mpl/has\_xxx.hpp](../../../../boost/mpl/has_xxx.hpp)>

Parameters

ParameterRequirementDescription
nameA legal identifier tokenA name of the template member being detected.

Expression semantics

For any legal C++ identifier name:

[BOOST\_MPL\_HAS\_XXX\_TEMPLATE\_DEF](./has-xxx-template-def.html)(name)

| Precondition: |

Appears at namespace scope.

| | Return type: |

None.

| | Semantics: |

Equivalent to

[BOOST\_MPL\_HAS\_XXX\_TEMPLATE\_NAMED\_DEF](./has-xxx-template-named-def.html)(
      BOOST_PP_CAT(has_,name), name, false
    )

|

Example

[BOOST\_MPL\_HAS\_XXX\_TEMPLATE\_DEF](./has-xxx-template-def.html)(xxx)

struct test1 {};
struct test2 { void xxx(); };
struct test3 { int xxx; };
struct test4 { static int xxx(); };
struct test5 { typedef int xxx; };
struct test6 { struct xxx; };
struct test7 { typedef void (*xxx)(); };
struct test8 { typedef void (xxx)(); };
struct test9 { template< class T > struct xxx {}; };[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test1> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test2> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test3> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test4> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test5> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test6> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test7> ));[BOOST\_MPL\_ASSERT\_NOT](./assert-not.html)(( has_xxx<test8> ));

#if !defined([BOOST\_MPL\_CFG\_NO\_HAS\_XXX\_TEMPLATE](./cfg-no-has-xxx-template.html))[BOOST\_MPL\_ASSERT](./assert.html)(( has_xxx<test9> ));
#endif[BOOST\_MPL\_ASSERT](./assert.html)(( has_xxx<test9,[true\_](./bool.html)> ));

See also

Macros, BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF, BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE, BOOST_MPL_LIMIT_METAFUNCTION_ARITY

| Prev Next | Back Along | Up Home | Full TOC |

|