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

THE BOOST MPL LIBRARY: Handling Placeholders

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

Handling Placeholders

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

template <class X>
struct two_pointers
    : twice<boost::add_pointer<_1>, X>
{};

Но когда мы смотрим на реализациюboost::add_pointer, становится ясно, что текущее определениедваждыне может работать таким образом.

template <class T>
struct add_pointer
{
    typedef T* type;
};

Чтобы быть инвокируемымдважды,бустер::add_pointer<_1>должен быть классом метафункций, вдоль линийadd_pointer_f. Вместо этого это просто нулевая метафункция, возвращающая почти бессмысленный тип_1*. Любая попытка использоватьдва_пойнтерапотерпит неудачу, когдаприменимо1достигает вложенной::применитьметафункцию вусилите::add_pointer<_1>и обнаружит, что она не существует.

Мы определили, что не получаем желаемое поведение автоматически, так что дальше? Так какmpl:: преобразованиеможет сделать что-то подобное, у нас должен быть способ сделать это тоже.

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




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



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


реклама


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

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