Описание тега boost-mpl

Библиотека Boost.MPL - это универсальная высокоуровневая среда метапрограммирования шаблонов C++ для алгоритмов, последовательностей и метафункций времени компиляции. Он обеспечивает концептуальную основу и обширный набор мощных и согласованных инструментов, которые делают выполнение явного метапрограммирования на C++ максимально простым и приятным в рамках текущего языка.
0 ответов

C++ Boost MPL / Fusion векторов динамического push_back

Я новичок в мире TMP, и мне нужна помощь относительно использования векторов в boost mpl или fusion. Итак, вот ситуация: У меня есть API для асинхронных вызовов функций в многопоточной среде, который реализован как библиотека времени выполнения, нап…
2 ответа

Ошибка компиляции на boost:: mpl:: tag<T>:: type

Я недавно попробовал boost:: mpl, и он кажется потрясающим и ужасным. Иногда информация об ошибке компиляции довольно запутанная. На этот раз я получаю проблемы на следующий код: #include &lt;iostream&gt; #include &lt;boost/type_traits/is_same.hpp&g…
27 май '13 в 07:30
1 ответ

Условные операторы C++ во время компиляции

Есть ли способ во время компиляции выбрать один из двух путей кода во время выполнения? Я знаю, что перегрузка функций может быть использована для выполнения этого подвига, но затем размер кода увеличивается, потому что обе мои функции скомпилирован…
04 апр '12 в 12:56
6 ответов

Слабосвязанное неявное преобразование

Неявное преобразование может быть действительно полезным, когда типы семантически эквивалентны. Например, представьте две библиотеки, которые реализуют тип одинаково, но в разных пространствах имен. Или просто тип, который в основном идентичен, за и…
15 янв '11 в 20:37
1 ответ

Мне нужна реализация boost::mpl функции exp()

Кто-нибудь знает, где я могу найти это? В противном случае мне придется написать это самому. Благодарю.
07 янв '11 в 19:13
1 ответ

Boost MPL интегрального типа накапливать

Как мне добавить цифры? typedef boost::mpl::vector&lt; boost::mpl::int_&lt;1&gt;, boost::mpl::int_&lt;2&gt;, boost::mpl::int_&lt;3&gt;, boost::mpl::int_&lt;4&gt;, boost::mpl::int_&lt;5&gt;, boost::mpl::int_&lt;6&gt; &gt; ints; typedef boost::mpl::ac…
16 апр '12 в 09:04
2 ответа

boost-mpl, fold и placeholder, выбрать класс из вектора

Я пытаюсь изучить метапрограммирование шаблона C++. Учитывая boost::mpl::vector классов, я хочу вычислить индекс этого класса, где статическая переменная-член имеет определенное значение. Я нашел решение, которое, кажется, работает. Однако для прави…
05 июн '13 в 12:47
1 ответ

В boost MPL, как я могу проверить, работает ли операция, как задумано?

Обычно, когда я пишу код, я часто проверяю, что то, что я делаю, работает, но используя какую-то операцию подтверждения: std::vector&lt;int&gt; a(1, 1); std::vector&lt;int&gt; b = {1}; assert(a == b); // this either works, or breaks in a helpful man…
30 сен '14 в 06:09
1 ответ

Использование boost mpl lambda с классом шаблонов variadic

Мне трудно понять, почему следующая простая программа не скомпилируется. У меня есть шаблон класса Variadic (my_type ниже), который я хочу использовать для преобразования вектора mpl. Следующий фрагмент кода приводит к ошибке компиляции "/boost/mpl/…
3 ответа

Проверьте наличие глобального оператора << в C++

Здравствуйте, я хочу написать две реализации функции-члена to_string следующим образом: template &lt;typename T0&gt; class foo { public: std::string to_string(); public: T0 m_Value; }; template &lt;typename T0&gt; std::string foo&lt;T0&gt;::to_strin…
04 сен '13 в 05:41
0 ответов

Увеличить последовательность MPL и определяет: Как превратить последовательность MPL в строку определения?

Я понимаю, что мы можем печатать элементы в определения один за другим, зная общее количество (псевдокод): // For the sake of simplicity, I assume the Sequence passed is a boost::mpl::vector #define seq_to_array_str \ &lt; typename boost::mpl::at&lt…
06 дек '11 в 06:36
0 ответов

C++ время компиляции для цикла над целочисленной константой

Я работал над переносом некоторого кода Windows C++ на linux, который включает специализацию шаблонов и boost::mpl. Моя проблема в том, что (1) не удается получить компиляцию частичной специализации шаблона класса (из-за зависимости аргумента), (2) …
1 ответ

Заголовок Boost 1.61 пытается переопределить mpl_::bool_

Я на Boost 1.61 и компилирую clang 4.0.1, и я компилирую для linux-gnu Ранее я был на Boost 1.52 и не имел этой проблемы. Просто изменяя версии, я получаю ошибку компилятора о переопределении mpl_::bool_ Я не использую никаких предварительно скомпил…
11 дек '18 в 20:31
1 ответ

Условное сопоставление типов времени компиляции на основе параметра шаблона

Как мне во время компиляции проверить, имеет ли параметр шаблона конкретное перечисление, и если это правда, получить это значение перечисления. Я ищу что-то подобное для параметра шаблона T который может (или не может) иметь тип enum NeedsToAlign: …
01 май '14 в 02:36
1 ответ

Boost.MPL преобразовать с состоянием?

У меня есть следующая последовательность mpl boost::mpl::vector_c&lt;std::size_t, 0, 1, 2, 0, 1, 0&gt; и мне нужно преобразовать его в соответствии со следующим алгоритмом (версия времени выполнения): i=0 output_sequence=[] for k in (0,...,len(input…
28 май '12 в 23:46
1 ответ

Повысить сериализацию mpl::list варианта check_const_loading() ошибка компиляции

Следующее использует mpl::list для инициализации варианта наддува. Затем он сериализует вариант. Он компилируется и отлично работает при сохранении, но не при загрузке. Компиляция даже не удалось загрузить. Кто-нибудь знает в чем проблема? Спасибо A…
1 ответ

Получение индекса boost::fusion::vector из boost::mpl::vector

Я начал играть с библиотекой boost fusion и mpl и столкнулся с довольно простой проблемой. Я объявил следующие типы: typedef boost::mpl::vector&lt;char, int, long&gt; TypeVector; typedef boost::fusion::vector&lt;char, int, long&gt; FusionVector_t; Т…
01 окт '10 в 17:01
1 ответ

Ошибка обёртывания типа с boost::mpl::for_each (раздел 9.1.1 из книги Абрахамса и Гуртовой)

Следующий код почти дословно скопирован из раздела 9.1.1 книги "Метапрограммирование шаблонов на С ++: концепции, инструменты и методы Boost and Beyond" Дэвида Абрахамса и Алексея Гуртового. Единственное изменение заключается в том, что я хочу иметь…
27 сен '11 в 19:04
2 ответа

Может ли кто-нибудь помочь мне создать контейнер переменных, используя Boost::MPL?

Я создал физическую систему, которая обрабатывает любой объект столкновения с любым объектом столкновения следующим образом: namespace Collision { template &lt;typename T, typename U&gt; inline void Check(T&amp; t, U&amp; u) { if(u.CheckCollision(t.…
26 апр '11 в 07:16
1 ответ

Как получить тип члена boost::mpl для заполнения

Скажем, есть два класса: struct A { using Key = int; using Value = char; }; struct B { using Key = char; using Value = float; }; Я хочу использовать их типы членов для определения карты Fusion: typedef boost::fusion::map &lt; boost::fusion::pair&lt;…
01 ноя '17 в 19:16