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

Arguments

Boost , Chapter 1. Phoenix 3.2.0 , Core

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

PrevUpHomeNext
#include <boost/phoenix/core/argument.hpp>

Мы используем пример:

expression::argument<N>::type

Представить аргумент функции Nth. Заполнитель аргумента действует как воображаемый набор данных, где будет размещен аргумент функции.

Predefined Arguments

Есть несколько предопределенных примеров<expression::argument<N>::type>, названных<arg1>.<argN>и егоБЛЛаналог<_1>.<_N>(где N — предопределенный максимум).

Вот некоторые предварительные определения<arg1>.<argN>

namespace placeholders
{
    expression::argument<1>::type const arg1 = {};
    expression::argument<2>::type const arg2 = {};
    expression::argument<3>::type const arg3 = {};
}

и.<_1>..<_N>Стильные аналоги:

namespace placeholders
{
    expression::argument<1>::type const _1 = {};
    expression::argument<2>::type const _2 = {};
    expression::argument<3>::type const _3 = {};
}
[Note] Note

Вы можете установить<BOOST_PHOENIX_ARG_LIMIT>, предопределенный максимальный индекс заполнителя. По умолчанию<BOOST_PHOENIX_ARG_LIMIT>устанавливается<BOOST_PHOENIX_LIMIT>(см.Актёр).

User Defined Arguments

При необходимости вы можете определить свои собственные<argument>имена. Например:

expression::argument<1>::type x; // note one based index

<x>может теперь использоваться как параметр ленивой функции:

add(x, 6)

который эквивалентен:

add(arg1, 6)
Evaluating an Argument

Аргумент при оценке выбирает аргумент Nth из тех, которые были переданы клиентом.

Например:

char        c = 'A';
int         i = 123;
const char* s = "Hello World";
cout << arg1(c) << endl;        //  Get the 1st argument: c
cout << arg1(i, s) << endl;     //  Get the 1st argument: i
cout << arg2(i, s) << endl;     //  Get the 2nd argument: s

распечатает:

A
123
Hello World
Extra Arguments

В C и C++ функция может иметь дополнительные аргументы, которые вообще не используются самим телом функции. Эти дополнительные аргументы просто игнорируются.

Феникс также позволяет принимать дополнительные аргументы. Например, вспомним нашу первоначальную функцию<add>:

add(arg1, arg2)

Теперь мы знаем, что частичное применение этой функции приводит к функции, которая ожидает 2 аргумента. Тем не менее, библиотека немного более снисходительна и позволяет абоненту предоставить больше аргументов, чем требуется. Таким образом,<add>фактически допускает 2или болееаргументов. Например, с:

add(arg1, arg2)(x, y, z)

Третий аргумент<z>игнорируется. В дальнейшем между аргументами также игнорируются. Пример:

add(arg1, arg5)(a, b, c, d, e)

Здесь игнорируются аргументы b, c и d. Функция<add>принимает в первом аргументе<arg1>и пятом аргументе<arg5>.

[Note] Note

Есть несколько причин, по которым соблюдение строгой вежливости нежелательно. Примером является функция обратного вызова. Типичные функции обратного вызова предоставляют больше информации, чем требуется. Функции Lambda часто используются в качестве обратных вызовов.


PrevUpHomeNext

Статья Arguments раздела Chapter 1. Phoenix 3.2.0 Core может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 22:45:13/0.0063619613647461/0