![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
The Boost Parameter Library Reference DocumentationBoost , ,
|
Authors: | Давид Абрахамс Дэниел Уоллин | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Contact: | Этот раздел охватывает некоторые основные сведения, которые вам нужно знать, чтобы понять эту ссылку.
1.1 NamespacesВ этом документе все неквалифицированные идентификаторы должны быть определены в пространстве именboost::parameter., если не указано иное. 1.2 ExceptionsНикакая операция, описанная в этом документе, не предусматривает исключения, если не указано иное. 1.3 Thread SafetyВсе компоненты этой библиотеки можно безопасно использовать из нескольких потоков без синхронизации.1 1.4 TypographyИмена, написанные вбез засечек, представляютпонятия. В кодовых блокахкурсивомпредставлен неуточненный текст, удовлетворяющий требованиям, приведенным в подробном описании, которое следует за кодовым блоком. В спецификации токенов, генерируемых макросом,жирный типиспользуется для выделения позиции расширенного макроаргумента в результате. Специальный символ β представляет значение.BOOST_PARAMETER_MAX_ARITY. 2 Terminology
Note In this reference, we will use concept names (and other names) to describe both types and objects, depending on context. So for example, “an ArgumentPack” can refer to a type that models ArgumentPack or an object of such a type. 3 ConceptsЭтот раздел описывает общие понятия типа, используемые библиотекой параметров. 3.1 ArgumentPackArgumentPackпредставляет собой наборпомеченных ссылокs на фактические аргументы, переданные функции. КаждыйArgumentPackтакже является действительным MPL.Передовая последовательность, состоящая изтипа тега ключевого словав егопомеченной ссылке. RequirementsВ таблице ниже,
Любые исключения из призываwзначениебудет распространяться на вызывающего.
3.2 ParameterSpecParameterSpecописывает требования типа для аргументов, соответствующих данномуключевому слову, и указывает, является ли аргумент необязательным или обязательным. В таблице ниже подробно описаны разрешенные формы и описано их состояние для удовлетворения фактическим типом аргумента. В каждом ряду,
Информация вParameterSpecиспользуется дляограниченияаргументов, которые будут соответствоватьфункциям пересылки. 4 Class Templates4.1 keywordТип каждогообъекта ключевых словявляется специализациейключевого слова.
template <class Tag> struct keyword { template <class T> ArgumentPack operator=(T& value) const; template <class T> ArgumentPack operator=(T const& value) const; template <class T> tagged default operator|(T& x) const; template <class T> tagged default operator|(T const& x) const; template <class F> tagged lazy default operator||(F const&) const; static keyword<Tag>& get(); };
4.2 parametersПредоставляет интерфейс для сборки фактических аргументов впередающую функциювArgumentPack, в котором любыепозиционныеаргументы будут помечены в соответствии с соответствующим шаблонным аргументом впараметры.
template <class P0 = unspecified, class P1 = unspecified, …class Pβ = unspecified> struct parameters { template <class A0, class A1 = unspecified, …class Aβ = unspecified> struct match { typedef … type; }; template <class A0> ArgumentPack operator()(A0& a0) const; template <class A0, class A1> ArgumentPack operator()(A0& a0, A1& a1) const; ⋮ template <class A0, class A1, …class Aβ> ArgumentPack operator()(A0& a0, A1& a1, …Aβ& aβ) const; };
Note В этом разделеRiиKiопределяются следующим образом для любого типа аргументаAi:
4.3 optional, requiredЭти шаблоны описывают требования к параметру функции.
template <class Tag, class Predicate = unspecified> struct optional; template <class Tag, class Predicate = unspecified> struct required; Значение по умолчаниюПредикатаявляется неопределенным.Метафункция, возвращающаяmpl::true_для любого аргумента. 4.4 deducedЭтот шаблон используется для обертывания аргументатега ключевого словадонеобязательногоилитребуемого.
template <class Tag> struct deduced; 5 MetafunctionsМетафункцияконцептуально является функцией, которая работает на типах C++ и возвращает их. 5.1 bindingВозвращает тип результата индексации пакета аргументов стипом тега ключевых словили спомеченным по умолчанию.
template <class A, class K, class D = void> struct binding { typedef … type; };
5.2 lazy_bindingВозвращает тип результата индексации пакета аргументов с помеченным ленивым по умолчанию.
template <class A, class K, class F> struct lazy_binding { typedef … type; };
5.3 value_typeВозвращает тип результата индексации пакета аргументов стипом тега ключевых словили спомеченным по умолчанию.
template <class A, class K, class D = void> struct value_type { typedef … type; };
6 Code Generation MacrosМакрос в этом разделе может быть использован для облегчения написания кода с помощью параметра libray путем устранения повторяющихся шаблонов. 6.1 BOOST_PARAMETER_FUNCTION(result,name,tag_namespace,arguments)
6.2 BOOST_PARAMETER_MEMBER_FUNCTION(result,name,tag_namespace,arguments)
См.BOOST_PARAMETER_FUNCTION (результат, имя, тег_namespace, аргументы) 6.3 BOOST_PARAMETER_CONSTRUCTOR(cls, impl, tag_namespace, arguments)
6.4 BOOST_PARAMETER_NAME(name)Объявляет тип тега и объект ключевого слова. Расширяется до: Еслиимяимеет вид: (tag-name, namespace-name) object-name тогда namespace namespace-name { struct tag-name { static char const* keyword_name() { return ##tag-name; } typedef unspecified _; typedef unspecified _1; }; } ::boost::parameter::keyword<tag-namespace::tag-name> const& object-name = ::boost::parameter::keyword<tag-namespace::tag-name>::instance; Другое namespace tag { struct name { static char const* keyword_name() { return ##name; } typedef unspecified _; typedef unspecified _1; }; } ::boost::parameter::keyword<tag::name> const& _name = ::boost::parameter::keyword<tag::name>::instance; 6.5 BOOST_PARAMETER_TEMPLATE_KEYWORD(name)Расширяется до: namespace tag { struct name; } template <class T> struct name : ::boost::parameter::template_keyword<tag::name, T> {}; 6.6 BOOST_PARAMETER_FUN(r,n,l,h,p)Deprecated This macro has been deprecated in favor of BOOST_PARAMETER_FUNCTION. Генерирует последовательностьфункции пересылкишаблонов, названныхn, с частотами, варьирующимися отlдоh, возвращаяrи используяpдля управления разрешением перегрузки и назначения меток позиционным аргументам.
6.7 BOOST_PARAMETER_KEYWORD(n,k)Deprecated This macro has been deprecated in favor of BOOST_PARAMETER_NAME. Генерирует объявление типатега ключевого слова, названногоkв пространстве именn, и соответствующееопределение объекта ключевых словв замкнутом пространстве имен.
6.8 BOOST_PARAMETER_MATCH(p,a,x)Создает декларацию параметров по умолчанию дляфункции пересылки.
7 Configuration Macros7.1 BOOST_PARAMETER_MAX_ARITYОпределяет максимальное количество аргументов, поддерживаемых библиотекой. Библиотека будет определятьтолько в том случае, если она еще не определена.
8 TutorialНажмитена ссылку. Параметры учебной документации.
Статья The Boost Parameter Library Reference Documentation раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |