Вопросы по теме 'variadic-templates'

Как изменить каждый элемент пакета параметров и создать из них кортеж?
У меня возникла проблема с шаблоном функции с переменным числом аргументов. Мне нужно проверить каждый элемент пакета параметров, упаковать элемент, затем поместить все упакованные элементы в кортеж и вернуть его. Вот общая идея того, что я хотел бы...
948 просмотров

Обобщенные миксины
Я писал код, в котором у меня есть класс, который может принимать примеси в качестве переменных параметров шаблона. Однако мне также нужны примеси, чтобы иметь доступ к базовому классу через идиому CRTP. Вот минимальный пример, который не может...
618 просмотров

Вызов функции для каждого аргумента вариативного шаблона и массива
Итак, у меня есть тип X : typedef ... X; и шаблонная функция f : class <typename T> void f(X& x_out, const T& arg_in); а затем функция g : void g(const X* x_array, size_t x_array_size); Мне нужно написать...
30264 просмотров
schedule 22.10.2022

Почему компиляторы не могут расширять аргументы вариативного шаблона с помощью оператора запятой?
Я знаю, что мы не можем использовать расширения с переменным числом аргументов, как если бы это была цепочка операторов-запятых . В этом вопросе пример такой: template<typename... Args> inline void increment_all(Args&... args) {...
1030 просмотров
schedule 26.11.2023

Попытка удалить последний тип из кортежа не удалась
Я пытаюсь удалить последний элемент кортежа. Это работает, когда мне нужно удалить только один элемент в кортеже. Но когда у меня больше одного, все идет не так. Я не могу понять, почему это не работает. Это ошибки, которые я получаю:...
1560 просмотров
schedule 09.11.2023

пакеты параметров не расширены с помощью «еще одной ошибки шаблона с переменным числом аргументов в gcc?
Общеизвестно, что обработка шаблонов с переменным числом в gcc неоднородна (см., например, это и это ), но мне интересно, известна ли уже следующая ошибка (Я не могу найти его на bugzilla) или это действительно ошибка. По сути, gcc (4.8.1) не...
5238 просмотров
schedule 16.08.2022

Распаковка пакетов параметров в псевдонимах шаблонов
У меня возникла проблема с распаковкой вариативных шаблонов в псевдоним шаблона. Следующий код работает с Clang 3.4 и GCC 4.8, но не работает с GCC 4.9: template <typename T, typename...> using front_type = T; template <typename......
1296 просмотров

Расширение пакета шаблонов Variadic
Я пытаюсь изучить вариативные шаблоны и функции. Я не могу понять, почему этот код не компилируется: template<typename T> static void bar(T t) {} template<typename... Args> static void foo2(Args... args) { (bar(args)...); } int...
44284 просмотров
schedule 30.07.2022

Шаблоны Variadic и реализация кортежа Александреску
Я пытаюсь немного узнать о метапрограммировании шаблонов, и в настоящее время я играю с вариативными шаблонами. В своем докладе «Variadic Templates is Funadic» Александреску представляет небольшую реализацию кортежа, которую я пытаюсь создать и,...
1187 просмотров
schedule 12.08.2022

C++: вручную создать пакет параметров шаблона с переменным числом аргументов
Я хотел бы иметь возможность сделать что-то вроде этого: Учитывая функцию: void some_func(int a, int b, int c) { cout << a << b << c; } void generic_call(vector<int>& v) { Args......
789 просмотров
schedule 07.12.2023

Идентификатор аргумента расширения пакета шаблонов Variadic
Я пытаюсь создать функцию шаблона с переменным числом аргументов, которая считывает элементы по порядку (с индексом). Цель состоит, например, в вызове функции read_tuple для чтения двух целых чисел с идентификаторами 0 и 1 (с read_int(0) и...
310 просмотров
schedule 27.07.2022

C++: использование типа в качестве ключа карты приводит к ошибкам подстановки шаблона
Я использую кортеж в качестве ключа для отслеживания элементов на карте, а затем перебираю карту для создания строковой версии карты. Чтобы помочь мне с преобразованием, у меня есть удобная функция шаблона, которая объединяет кортеж, используемый в...
331 просмотров

C++ Преобразование пакета параметров типов в пакет параметров индексов
Есть ли способ преобразовать пакет параметров типов в пакет параметров целых чисел от 0 до sizeof...(Types) ? В частности, я пытаюсь сделать что-то вот это: template <size_t... I> void bar(); template <typename... Types> void...
861 просмотров

Сделать вариативный макрос/метод, который печатает имена и значения всех переменных
Существующий макрос получает вариативное количество переменных в моем приложении. Я хочу, используя этот макрос, напечатать эти переменные в формате name=value . Вот небольшой пример: #define EXISTING_MACRO(...) < ??? > int main() int a...
586 просмотров

Карта, содержащая указатели функций в C++
Проблема заменить мои операторы if и else картой, которая содержит строку в качестве ключа и указатель на функцию в качестве значения. Однако каждый указатель на функцию может указывать на функции, которые имеют другой тип возвращаемого значения и...
2585 просмотров

Инициализировать std::array пакетом параметров из произвольного индекса
Инициализация std::array вариативными аргументами шаблона, начиная с заданного индекса, может быть выполнена следующим образом: #include <array> template <typename T, size_t N> struct A { template <typename ... Ts>...
2877 просмотров

Параметр шаблона — указатель на функцию с вариативными аргументами
Я знаю, что могу сделать это: template<typename T, typename Ret, typename A1, typename A2, Ret(T::*F)(A1, A2)> class C{} Но, как видите, эти A1 и A2 немного уродливы. На самом деле я не знаю количества аргументов. Звучит как...
1743 просмотров
schedule 24.02.2024

Вложенные классы шаблонов
Я хочу иметь возможность создать общий вложенный шаблон, чтобы я мог найти общий размер всех классов. Для начала представьте классы A, B, C и т. д., каждый из которых имеет mSize член и GetSize() функцию. Я делаю следующий процесс: int...
531 просмотров

Передайте кортеж вспомогательному классу
Мне нужна помощь в реализации дизайна для моей программы. Итак, у меня есть кортеж со всем, что я хочу, созданный из этого вызова auto t1 = getMyTuple(); Но я хочу сделать вспомогательный класс, чтобы я мог перегружать оператор ‹‹, чтобы при...
33 просмотров
schedule 05.03.2024

временные объекты с вариативными аргументами шаблона; еще одна разница g++/clang++
Следующий код struct foo { foo () { } template <typename T0, typename ... Ts> foo (const T0 & t0, const Ts & ... ts) { foo(ts...); } }; int main() { foo f(1, 2); return 0; } компилируется без...
118 просмотров