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

unfused

Boost , Chapter 1. Fusion 2.2 , Adapters

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
Description

N-aryPolymorphic Function Objectшаблон адаптера для унарногоОбъект полиморфной функциицелевая функция. При вызове его аргументы объединяются впоследовательность случайного доступассылок, которая передается объекту целевой функции.

Нулевая перегрузка оператора вызова может быть удалена путем установки второго параметра шаблона на<false>, что очень полезно, если вычисление типа результата приведет к ошибке компиляции, в противном случае (прототипы оператора вызова не могут быть шаблонами и, таким образом, инстанцируются уже в шаблоне класса).

Принимаются только аргументы LValue. Чтобы преодолеть это ограничение, применитеBoost.Functional.

Тип целевой функции может быть квалифицированным или эталонным. Квалификация Const сохраняется и распространяется соответствующим образом. Другими словами, можно использовать только конст-версии<operator()>, если объект целевой функции является конст- или, если объект целевой функции удерживается значением, адаптер является конст-функцией.

Header
#include <boost/fusion/functional/adapter/unfused.hpp>
Synopsis
template <class Function, bool AllowNullary = true>
class unfused;
Template parameters

Параметр

Описание

по умолчанию

<Function>

УнарныйОбъект полиморфной функции

<AllowNullary>

Булева постоянная

Правда

Model of

Notation

F

Возможный конст-квалифицированный унарныйобъект полиморфной функциитипа или эталонный тип его

f

Объект, конвертируемый в<F>

UL

Тип<unfused<F>>

ul

<UL><f>[<f>] [[<f>]] [[<f>]] [[<f>]]] [[<f>]]][[править]]

a0...aN

Аргументы против<ul>

Expression Semantics

выражение

Семантика

<UL(f)>

Создает слитую функцию, как описано выше, инициализирует целевую функцию<f>.

<UL()>

Создает слитую функцию, как описано выше, пытается использовать конструктор по умолчанию<F>.

<ul(a0>...<aN)>

Звонки<fПоследовательность, которая содержит ссылки на аргументы<a0>...<aN>.

Example
struct fused_incrementer
{
    template <class Seq>
    struct result
    {
        typedef void type;
    };
    template <class Seq>
    void operator()(Seq const & s) const
    {
        for_each(s,++boost::lambda::_1);
    }
};
void try_it()
{
    unfused<fused_incrementer> increment;
    int a = 2; char b = 'X';
    increment(a,b);
    assert(a == 3 && b == 'Y');
}
See also

PrevUpHomeNext

Статья unfused раздела Chapter 1. Fusion 2.2 Adapters может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 05:17:29/0.005993127822876/1