Вопросы по теме 'boost-mpl'

Можно ли генерировать типы со всеми комбинациями аргументов шаблона?
У меня есть шаблонный класс template<class U, class V, class W> class S { //... implementations }; и некоторые реализации типов запасов для типов U , V и W : typedef boost::mpl::vector<U0, U1> u_types; typedef...
3075 просмотров
schedule 02.03.2022

Как вызвать конструктор не по умолчанию для каждого унаследованного типа из списка типов?
Я использую список типов Boost для реализации шаблона политики следующим образом. using namespace boost::mpl; template <typename PolicyTypeList = boost::mpl::vector<> > class Host : public inherit_linearly<PolicyTypeList,...
1063 просмотров

Как применить mpl::transform к mpl::string?
Я пытаюсь применить преобразование к mpl::string , но не могу его скомпилировать. Я использую MS VC++2010 и Boost 1.43.0. Код: #include <boost/mpl/string.hpp> #include <boost/mpl/vector_c.hpp> #include...
437 просмотров

Примеры практического использования Boost::MPL?
Можете ли вы поделиться какими-либо реальными примерами Boost::MPL? (кроме лямбда-выражений), просто чтобы я лучше понял его назначение и область практического использования? Учебное пособие по документации MPL содержит размерный анализ , но,...
13818 просмотров
schedule 13.06.2022

Может ли кто-нибудь помочь мне создать контейнер переменных с помощью Boost::MPL?
Я создал физическую систему, которая обрабатывает любой объект столкновения с любым объектом столкновения следующим образом: namespace Collision { template <typename T, typename U> inline void Check(T& t, U& u) {...
712 просмотров
schedule 07.10.2023

Как наследоваться от списка типов, а затем вызывать член из списка унаследованных членов?
У меня есть набор классов, которые имеют следующую структуру: class U { public: explicit U(int) { ... } U() {...} Init(int) {...} }; Мне нужно иметь возможность составить 1 или несколько из этих классов в класс X. Псевдокод:...
866 просмотров

Получение имен типов во время компиляции в C++
Я хочу получить имя типа и распечатать его для целей отладки. Я использую следующий код: #include <cxxabi.h> inline const char* demangle(const char *s) { abi::__cxa_demangle(s, 0, 0, NULL); } template<typename T> inline const...
6412 просмотров
schedule 18.08.2022

Приложение функции boost::mpl typelist
У меня есть функция, которую я хочу выполнить для всех типов в списке типов (в настоящее время представленным списком mpl --- это вообще разумный способ приблизиться к ней?) Ключевым моментом здесь является то, что функция заботится только о типе,...
1914 просмотров
schedule 26.03.2023

почему набор boost mpl допускает неуникальные типы
Я считаю, что мое понимание boost::mpl::set должно быть в корне ошибочным. Я думал, что разрешены только уникальные типы. Но компилируется следующий код: #include <boost/mpl/set.hpp> #include <boost/mpl/vector.hpp> #include...
1076 просмотров
schedule 02.08.2022

`mpl::plus‹ mpl::int_‹1›, mpl::int_‹2› ›::type` отличается от типа `mpl::int_‹3›`?
В приведенном ниже коде воспроизводится поведение библиотеки boost MPL, которое я действительно не понимаю: #include <boost/type_traits/is_same.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/plus.hpp> using namespace...
425 просмотров

Множественное наследование интерфейсов в C++
У меня есть объектный интерфейс и открытая коллекция интерфейсов, которые производный объект может захотеть поддерживать. // An object class IObject { getAttribute() = 0 } // A mutable object class IMutable { setAttribute() = 0 } // A...
806 просмотров

Использование boost::mpl::iter_fold, а также получение boost::mpl::vector ключей из boost::mpl::map
Я пытаюсь написать небольшую метапрограмму, используя boost.mpl, которая сопоставляет «именованные каналы» между аудиоформатами с использованием двух карт каналов. Имя также является целым числом (перечислением). Простой пример того, чего я...
502 просмотров
schedule 26.03.2022

boost-mpl, fold и placeholders, выберите класс из вектора
Я пытаюсь изучить метапрограммирование шаблонов С++. Учитывая boost::mpl::vector классов, я хочу вычислить индекс этого класса, где статическая переменная-член имеет определенное значение. Я нашел решение, которое, кажется, работает. Однако для...
677 просмотров
schedule 04.04.2022

Как объединить const char* во время компиляции
У меня есть вектор mpl::string. Максимальный размер mpl::string — 32 элемента. Есть способ создать массив const char* во время компиляции MACRO(z,i,data) data ............. const char* array[] = { BOOST_PP_ENUM(SIZE,MACRO,mpl_vector) };...
2423 просмотров
schedule 15.05.2023

В boost MPL, как я могу проверить, работает ли операция так, как задумано?
Обычно, когда я пишу код, я часто проверяю, работает ли то, что я делаю, но использую какую-то операцию утверждения: std::vector<int> a(1, 1); std::vector<int> b = {1}; assert(a == b); // this either works, or breaks in a helpful...
192 просмотров
schedule 14.06.2023

Определение наибольшего sizeof() в варианте повышения
Данный: boost::variant<T1,T2,T3,...,TN> Вычислите следующее во время компиляции: max(sizeof(T1), sizeof(T2), sizeof(T3),... ,sizeof(TN)) Я понятия не имел, как к этому подойти, но этот ответ пролил свет на то, с чего мне...
757 просмотров
schedule 03.10.2022

Как упростить тип, сгенерированный make_variant_over
Вариант Boost имеет функцию под названием make_variant_over , которая берет последовательность MPL (например, list<A, B, C> ) и создает вариант из этих типов. Однако, если внимательно присмотреться, сгенерированный тип никогда не будет...
659 просмотров
schedule 03.03.2024

Вызов общей лямбды в boost::mpl::for_each()
Несколько ответов здесь ( Как пройти через boost::mpl::list? тот, с которого я начал), подразумевает, что я должен быть в состоянии построить общую лямбду для подачи на boost::mpl::for_each(), но я не могу найти работающий пример или создать его...
1019 просмотров
schedule 22.05.2023