Вопросы по теме '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 просмотров
schedule
02.02.2023
Как применить 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 просмотров
schedule
05.05.2023
Примеры практического использования 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 просмотров
schedule
28.06.2023
Получение имен типов во время компиляции в 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 просмотров
schedule
06.05.2024
Множественное наследование интерфейсов в C++
У меня есть объектный интерфейс и открытая коллекция интерфейсов, которые производный объект может захотеть поддерживать.
// An object
class IObject
{
getAttribute() = 0
}
// A mutable object
class IMutable
{
setAttribute() = 0
}
// A...
806 просмотров
schedule
16.07.2023
Использование 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