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

Boost Function Object Adapter Library

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

Function Object Traits

Заголовокfunctional.hppпредоставляет два шаблона классов признаков для функций и объектов функций:

Type Contents Description
template <typename T>
struct unary_traits
function_type The type of the function or function object itself (i.e., T).
param_type The type that should be used to pass the function or function object as a parameter.
result_type The type returned by the function or function object.
argument_type The type of the argument to the function or function object.
template <typename T>
struct binary_traits
function_type The type of the function or function object itself (i.e., T).
param_type The type that should be used to pass the function or function object as a parameter.
result_type The type returned by the function or function object.
first_argument_type The type of the first argument to the function or function object.
second_argument_type The type of the second argument to the function or function object.

Usage

Unary_traitsдолжна быть выполнена либо функция, принимающая один параметр, либо адаптируемый унарный объект функции (т.е. класс, полученный изstd::unary_function).или тот, который предоставляет те же самые теги. (См. раздел 20.3.1 стандарта C++.)

Бинарные чертыдолжен быть инстанцирован либо функцией, принимающей два параметра, либо адаптируемым объектом двоичной функции (т.е. классом, полученным изstd::binary_function).или тот, который предоставляет те же самые теги. (См. раздел 20.3.1 стандарта C++.)

Наиболее распространенным использованием этих шаблонов являются адаптеры функциональных объектов, что позволяет им адаптировать простые функции, а также функциональные объекты. Вы можете сделать это везде, где вы обычно пишете.

typename Operation::argument_type

Просто писать

typename boost::unary_traits<Operation>::argument_type

Вместо этого.

Additional Types Defined

В дополнение к стандартным шаблонам результатов и аргументов эти шаблоны признаков определяют два дополнительных типа.

function_type

Это тип функции или объекта функции и может использоваться в таких заявлениях, как:

template <class Predicate>
class unary_negate : // ...
{
  // ...
  private:
    typename unary_traits<Predicate>::function_type pred;
};

Если бы этот типдеф не был предоставлен, было бы невозможно объявитьpredтаким образом, чтобыunary_negateбыл инстанциирован с типом функции (см. C++ Standard §14.3.1 ¶3).

param_type

Этот тип подходит для передачи функции или объекта функции в качестве параметра другой функции. Например,

template <class Predicate>
class unary_negate : // ...
{
  public:
    explicit unary_negate(typename unary_traits<Predicate>::param_type x)
        :
        pred(x)
    {}
    // ...
};

Функциональные объекты передаются по ссылке на const; указатели функций передаются по значению.

Limitations

Эта библиотека использует эти черты во всех адаптерах функциональных объектов, теоретически делаяptr_funустаревшими. Однако сторонние адаптеры, вероятно, не воспользуются этим механизмом, и поэтомуptr_funвсе еще может потребоваться. Соответственно, эта библиотека также предоставляетулучшенные версии стандартных адаптеров указателей функций.

Эти шаблоны черт также не будут работать с компиляторами, которые не поддерживают частичную специализацию шаблонов. С помощью этих компиляторов шаблоны признаков могут быть инстанцированы только с адаптируемыми функциональными объектами, что требует использованияptr_fun, даже с адаптерами функциональных объектов в этой библиотеке.


Valid HTML 4.01 Transitional

Пересмотрено02 Декабря 200602 December, 2006[ORIG_END] -->

Авторское право и копия; 2000 Cadenza New Zealand Ltd.

Распространяется в соответствии с Лицензией на программное обеспечение Boost, версия 1.0. (См. сопроводительный файлLICENSE_1_0.txtили копию в) http://www.boost.org/LICENSE_1_0.txt

Статья Boost Function Object Adapter Library раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 07:57:34/0.0083391666412354/1