![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
ArgumentsBoost , Chapter 1. Phoenix 3.2.0 , Core
|
![]() |
Note |
---|---|
Вы можете установить< |
При необходимости вы можете определить свои собственные<argument
>имена. Например:
expression::argument<1>::type x; // note one based index
<x
>может теперь использоваться как параметр ленивой функции:
add(x, 6)
который эквивалентен:
add(arg1, 6)
Аргумент при оценке выбирает аргумент 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
В 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 |
---|---|
Есть несколько причин, по которым соблюдение строгой вежливости нежелательно. Примером является функция обратного вызова. Типичные функции обратного вызова предоставляют больше информации, чем требуется. Функции Lambda часто используются в качестве обратных вызовов. |
Статья Arguments раздела Chapter 1. Phoenix 3.2.0 Core может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |