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

THE BOOST MPL LIBRARY: The apply Metafunction

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

Front Page / Tutorial: Metafunctions and Higher-Order Metaprogramming / Handling Placeholders / The apply Metafunction

The apply Metafunction

Призыв к действиюлямбдаявляется настолько распространенной моделью, что MPL обеспечиваетприменять метафункцию, чтобы сделать именно это. использоватьmpl::apply, наша гибкая версиядваждыстановится:

#include <boost/mpl/apply.hpp>
template <class F, class X>
struct twice
   : mpl::apply<F, typename mpl::apply<F,X>::type>
{};

Вы можете думать оmpl::applyкак о шаблонеapply1, который мы написали, с двумя дополнительными функциями:

  1. Покаприменяется1работает только на классах метафункций, первый аргументmpl::applyможет быть любое лямбда-выражение (в том числе построенное с заполнителями).

  2. В то время какприменяется1принимает только один дополнительный аргумент, к которому будет применяться класс метафункций,mpl::applyможет вызвать свой первый аргумент на любое число от нуля до пяти дополнительных аргументов.Например:

    // binary lambda expression applied to 2 additional arguments
    mpl::apply<
        mpl::plus<_1,_2>   
      ,mpl::int_<6>
      ,mpl::int_<7>
    >::type::value // == 13
    
[5]См. раздел Configuration Macrosсправочного руководства MPLдля описания того, как изменить максимальное количество аргументов, обрабатываемыхmpl::apply.

Guideline

При написании метафункции, которая вызывает один из своих аргументов, используйтеmpl::применитетак, чтобы она работала с лямбда-выражениями.

Статья THE BOOST MPL LIBRARY: The apply Metafunction раздела может быть полезна для разработчиков на c++ и boost.




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 09:28:44/0.0057950019836426/0