Описание тега boost-preprocessor
Boost.Preprocessor is a library of C++ preprocessor metaprogramming tools including repetition and recursion
1
ответ
Boost-pp: как определить, является ли параметр макроса кортежем
Кортеж - это список через запятую, заключенный в скобки, например () (,) (thing,) (2,3) Если у меня есть #define ISTUPLE(x) \\... Я хотел бы что-то вроде ISTUPLE(nope) разрешить до 0 и ISTUPLE((yep)) разрешить до 1. [FWIW, у меня _RTFM_'d много.]
02 июн '14 в 14:46
0
ответов
Элемент массива Boost Preprocessor
Я рефакторинг некоторого существующего шаблонного кода, и понял, что препроцессор Boost::: может упростить вещи, но у меня уже возникли проблемы... Вот простой пример: #define CLASSES ( 4, ( A, B, C, D ) ) #define FOWARD_CLASS( Z, N, _ ) class BOOST…
17 июл '13 в 10:02
1
ответ
Препроцессор зацикливает последовательность заголовочных файлов
Можно ли включить последовательность файлов: file1,file2,file3 в цикле препроцессора? #include <boost/preprocessor/iteration/local.hpp> #include <boost/preprocessor/cat.hpp> // needed whitespace here----* #define BOOST_PP_LOCAL_LIMITS (1…
18 дек '13 в 15:33
2
ответа
Как скрыть поле через определение и предоставить только сеттер и геттер?
Интересно, как спрятать поле недвижимости (не делать его частным или общедоступным, а принудительно использовать сеттеры и геттеры) и предоставить ему простые сеттеры и геттеры. Поэтому мне интересно, как создать API, как: private: Property( int my_…
11 авг '12 в 21:15
1
ответ
Макро счетчик
Можно ли создать константы времени компиляции следующим образом: // event.h #define REGISTER_EVENT_TYPE() ... // Returns last_returned_number+1 // header1 #define SOME_EVENT REGISTER_EVENT_TYPE() // header2 #define SOME_OTHER_EVENT REGISTER_EVENT_TY…
25 фев '15 в 16:28
1
ответ
Является ли Boost.Preprocessor набором макросов для cpp или отдельным процессором?
Мне трудно получить точный ответ. PS Есть ли хороший обзор / учебное заведение?
11 май '11 в 08:29
2
ответа
Генерация переключателя времени компиляции на основе количества полей в структуре
Как в C++03 получить во время компиляции количество членов выбранной структуры? Я экспериментировал с BOOST_FUSION_ADAPT_STRUCT но я не получил никакого рабочего примера. Я хочу сгенерировать оператор switch во время компиляции, где будет один случа…
29 июл '15 в 22:57
1
ответ
Как boost::function поддерживает класс шаблона с параметрами шаблона различной длины
Я хочу использовать препроцессор boost для объявления шаблонных классов с различной длиной шаблона, в основном, как это делает boost::function. #if !BOOST_PP_IS_ITERATING #ifndef D_EXAMPLE_H #define D_EXAMPLE_H #include <boost/function> #inclu…
24 окт '11 в 11:48
2
ответа
Реализация enumerate_foreach на основе Boost foreach
Предисловие к этому вопросу: я реализовывал различные служебные функции C++ и (когда мне нужно) макросы в большем наборе инструментов для собственного использования. Недавно я делал множество макросов цикла на основе BOOST_FOREACH, а также итеративн…
31 июл '12 в 04:59
1
ответ
Передача BOOST_PP_DEC в другой макрос
Я пытаюсь сделать что-то вроде: #define FOO( N ) Bar ## N ## _ Bar ## N - 1 Так сказать FOO( 2 ) = Bar2_Bar1 Проблема заключается в N-1 там. Препроцессоры не будут выполнять такую математику, но у boost есть удобный макрос BOOST_PP_DEC для уменьше…
07 июл '14 в 12:38
3
ответа
Можно ли реализовать BOOST_PP_DEFINED?
Можно ли написать функциональный макрос препроцессора C, который возвращает 1 если его аргумент определен, и 0 иначе? Давай называть это BOOST_PP_DEFINED по аналогии с другими макросами препроцессора boost, которые, как мы можем предположить, также …
03 дек '16 в 04:34
2
ответа
Шаблоны C++ и генерация кода для Variadic Sequence: как создать похожий блок кода для каждого аргумента / типа?
Интересно, можем ли мы иметь такой класс (псевдокод): template <class Arg1T, ... class ArgNT> class my_class { public: my_class(Arg1T Arg1, std::string Arg1_name ... ArgNT ArgN, std::string ArgN_name){} }; И если бы мы могли автоматически гене…
30 ноя '11 в 18:26
2
ответа
Как я могу сгенерировать переменный макрос для объединенной строки
Я застрял здесь... #define CONCAT(a,b) BOOST_PP_STRINGIZE(BOOST_PP_CAT(a,b))#define CONCAT1(a,b,c) CONCAT(CONCAT(a,b),c) and so on. Как я могу сгенерировать макрос CONCAT, даже если 20 аргументов? Может быть, я могу использовать BOOST_PP_SEQ_FOR_EAC…
20 июл '12 в 08:01
2
ответа
Следите за расширением макроса
Я хочу отслеживать расширение макроса - сколько раз макрос был раскрыт и каковы аргументы, когда произошло расширение. Например, У меня макрос может выглядеть так: #define mymacro(x) int x и в моем коде у меня есть что-то вроде этого: mymacro(a); my…
01 мар '12 в 01:28
2
ответа
Использование препроцессора boost для итеративного вызова шаблона variadic
Предположим, у меня есть шаблон variadic: template<typename... Args> class Foo; Этот вариационный шаблон генерирует другой шаблон рекурсивно, пока не достигнет одного аргумента Foo на последнем уровне. Теперь я хочу иметь макрос, например Bar(…
27 янв '16 в 08:05
1
ответ
BOOST_PP_ITERATE() приводит к "нет такого файла или каталога"
Я изучаю библиотеку препроцессора boost (потому что мне нужно ее использовать), и я хотел попробовать механизм итерации файла. Я создал минимальный проект с a.cpp и b.hpp. То, что я пытаюсь сделать, это включить много времени b.hpp через pp boost: #…
29 сен '10 в 21:43
1
ответ
Повторите генерацию макроса
Я хотел бы создать следующие прагмы препроцессора #pragma blabla column("0030") #pragma blabla column("0130") #pragma blabla column("0230") ... #pragma blabla column("2330") час меняется от 0 до 23 Это возможно с BOOST_PP_LOCAL_LIMITS/ITERATE?
02 авг '18 в 16:19
2
ответа
Как я могу использовать препроцессор Boost для расширения строки
Я хочу расширить строку неизвестной длины с помощью библиотеки препроцессора Boost. Например, я хочу это: const string foo{"bar"}; Быть расширенным моим макросом к этому: foo [0], foo [1], foo [2], '\ 0' Вот мой код, который я в основном скопировал …
22 дек '14 в 13:43
1
ответ
Как перебрать две последовательности Boost Preprocessor одновременно?
Мне было интересно, можно ли сделать следующее с помощью последовательностей Boost Preprocessor. (Большинство вопросов SO, а также примеры Boost Preprocessor говорят только об одной последовательности) #define seq1 (a)(b)(c) #define seq2 (1)(2)(3) /…
01 фев '17 в 14:55
0
ответов
Использование препроцессора boost для создания перечисления с явным значением
Я пытаюсь использовать библиотеку препроцессора Boost для создания enum из списка (name, value) пар. Очевидно, что это не особенно полезно само по себе, но намерение состоит в том, чтобы связать это вместе с другим фрагментом кода, который я написал…
10 дек '17 в 09:58