Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

The MPL Reference Manual: BOOST_MPL_HAS_XXX_TEMPLATE_DEF

Boost , ,

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

Front Page / Macros / Introspection / BOOST_MPL_HAS_XXX_TEMPLATE_DEF

BOOST_MPL_HAS_XXX_TEMPLATE_DEF

Synopsis

#define BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name) \
    unspecified token sequence \
/**/

Description

Расширяется в определение булевойМетафункцияимеет имяДля любого типаxимеет_имя< ;x>::value==Правдаесли и только еслиxявляется классным типом и имеет вложенный элемент шаблонаx::шаблонИмяне болееBoost_MPL_LIMIT_METAFUNCTION_ARITYПараметры.

На недостающих компиляторах, не способных выполнить обнаружение,имеет_name::значениевсегдаложно. Макро-булевая конфигурацияBoost_MPL_CFG_NO_HAS_XXX_TEMPLATE, предоставляется для сигнализации или переопределения "недостатка" статуса конкретного компилятора.

[править]Примечание:BOOST_MPL_HAS_XXX_TEMPLATE_DEFявляется упрощенной передней частьюBOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEFмакрос интроспекции —конец примечания

Parameters

Parameter Requirement Description
Имя Юридический идентификатор Token Обнаружено имя члена шаблона.

Expression semantics

Для любого юридического идентификатора C++имя:

BOOST_MPL_HAS_XXX_TEMPLATE_DEF(name)
Precondition:

Appears at namespace scope.

Return type:

None.

Semantics:

Equivalent to

BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(
      BOOST_PP_CAT(has_,name), name, false
    )

Example

BOOST_MPL_HAS_XXX_TEMPLATE_DEF(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(( has_xxx<test1> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test2> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test3> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test4> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test5> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test6> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test7> ));
BOOST_MPL_ASSERT_NOT(( has_xxx<test8> ));
#if !defined(BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE)
BOOST_MPL_ASSERT(( has_xxx<test9> ));
#endif
BOOST_MPL_ASSERT(( has_xxx<test9, true_> ));

Статья The MPL Reference Manual: BOOST_MPL_HAS_XXX_TEMPLATE_DEF раздела может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 19:58:54/0.0063118934631348/0