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

THE BOOST MPL LIBRARY: Lambda and Non-Metafunction Templates

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 / Lambda Details / Lambda and Non-Metafunction Templates

Lambda and Non-Metafunction Templates

Есть только одна деталь выражений, которые мы еще не обсуждали. MPL использует специальное правило, чтобы упростить интеграцию обычных шаблонов в метапрограммы: После того, как все заполнители были заменены фактическими аргументами, если полученная шаблонная специализацияXне имеет вложенного::type, результат — толькоX.

Например,mpl::apply,T>всегда простоstd::vector< T>. Если бы не такое поведение, нам пришлось бы создавать тривиальные метафункции для создания обычных шаблонных специализаций в выражениях лямбда:

// trivial std::vector generator
template<class U> 
struct make_vector { typedef std::vector<U> type; };
typedef mpl::apply<make_vector<_>, T>::type vector_of_t;

Вместо этого мы можем просто написать:

typedef mpl::apply<std::vector<_>, T>::type vector_of_t;

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




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



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


реклама


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

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