Описание тега variadic-templates

Шаблоны с переменным числом параметров - это шаблоны, которые принимают переменное количество параметров.
1 ответ

Соответствие параметров шаблонов переменных в std::function

У меня есть следующий код: #include <iostream> #include <functional> template<typename Return, typename... Params> void func(std::function<Return(Params... )> x) {} void f(double) {} int main() { //func<void, double>(f)…
27 май '14 в 22:34
2 ответа

Как преобразовать этот список типов с разбойником?

У меня есть следующий список типов: using ComponentList = brigand::list<TransformComponent, ObjectComponent, BodyComponent> Как я могу преобразовать предыдущий список в новый список, который будет выглядеть так: using ComponentHandleList = bri…
6 ответов

Размер шаблона вариации (сумма размеров всех элементов)

Учитывая следующую функцию: template<typename... List> inline unsigned int myFunction(const List&... list) { return /* SOMETHING */; } Что проще всего поставить вместо /* SOMETHING */ чтобы вернуть сумму sizeof все аргументы? Например myFu…
01 окт '12 в 02:05
2 ответа

Для каждого типа шаблона аргумент типа набора

Скажем, у меня есть шаблон класса Variadic. Как создать функцию так, чтобы ее аргументы были заданного типа, например intс количеством аргументов, равным количеству типов шаблонов? template <typename... Types> class Test { public: void Func(??…
13 окт '16 в 07:49
1 ответ

Шаблонный аргумент и вывод параметров std::function

Предположим, есть функция шаблона foo() который принимает произвольное количество аргументов. Учитывая последний аргумент, всегда std::functionкак мне реализовать foo() шаблон показан ниже таким образом, что CbArgs будет содержать это std::functionп…
2 ответа

Одиночные, любопытно повторяющиеся шаблоны и параметры конструктора пересылки

Хорошо, я знаю, что синглетонов следует избегать, однако есть несколько случаев, когда они действительно нужны. Поэтому мое решение реализует их с использованием CRTP (странно повторяющийся шаблон) следующим образом: #include <iostream> #inclu…
0 ответов

Есть ли обходной путь для расширения пакета параметров при использовании объявлений

Расширение пакета параметров при использовании объявлений не поддерживается в C++ 14, поэтому следующий код не компилируется: template<typename T> struct A { virtual void foo(T); }; template<typename... T> struct B: public A<T>...…
22 дек '15 в 15:05
1 ответ

Доступ к отдельным типам вариационных шаблонов

Я создаю привязку lua в C++11. Я хочу обработать каждый тип в вариационном шаблоне. Я думал, что могу сделать что-то подобное, кроме как с помощью Params... представляет все типы внутри него, а не следующий отдельный тип внутри него, как это делают …
18 ноя '12 в 21:05
5 ответов

Нажатие и выталкивание первого элемента std::tuple

Я пишу функцию в C++ с переменным количеством аргументов (и разных типов) таким образом template<typename ...Ts> void myFunction(Ts ...args) { //create std::tuple to access and manipulate single elements of the pack auto myTuple = std::make_tu…
1 ответ

Как перебирать переменные параметры шаблона для создания переменного числа локальных переменных?

У меня есть много функций, которые очень похожи, но работают с разным количеством и типом локальных объектов: template <class T> T* create1( const std::vector<std::string>& names ) { A a( names[0] ); B b( names[1] ); C c( names[2] );…
18 ноя '16 в 14:21
0 ответов

Наследование базового класса с помощью рекурсивного шаблона

Как наследовать базовый класс в рекурсивном шаблонном классе? Мое требование что-то вроде этого Base <--- Param<> <--- Param<int> <--- Param<char,int> <---- Param<double,char,int> Я пытался наследовать базовый кла…
4 ответа

Создать шаблон из аргументов функций?

template<class... Foos> // N = sizeof...(Foos) template<typename... Args> // M = sizeof...(Args) void split_and_call(Args&&... args) { // Using Python notation here... Foos[0](*args[:a]); // a = arity of Foos[0] Foos[1](*args[a:b…
2 ответа

Variadic шаблон конструктор специализация в шаблоне класса

Я хочу иметь возможность специализировать ctor класса следующим образом: template<typename T> class Foo { public: template<typename... Ts> Foo(Ts... & args) { // ... } template<> Foo(int i) { // ... } }; Я получаю следующую оши…
2 ответа

Неоднозначная перегрузка на шаблонных вариационных шаблонах

Связанные с: Неоднозначная перегрузка доступа к шаблонным функциям без аргументов с переменными параметрами Простая функция шаблона не может мгновенно Почему эта переменная функция неоднозначна? Рассмотрим эту пару вариационных шаблонов: template&lt…
1 ответ

Ошибка сегментации в C++11 при игре с вариадическими шаблонами

Поэтому я играл с C++11 Varidiacs и хотел создать вещь под названием CallClass, в основном класс, который деформирует функцию для последующего вызова, когда все переменные установлены (действительно, я понятия не имею, может ли это быть полезным): #…
27 окт '16 в 08:41
2 ответа

Можно ли вызвать шаблонную функцию с переменным значением без явной специализации?

Я пытался написать функцию для пересылки аргументов для функции шаблона переменной, аналогично std::invoke, Вот код: #include <functional> template<class... Args> void f(Args&&... args) { } template<template<class...> cl…
04 май '18 в 09:50
1 ответ

Разверните пакет параметров в порядке

У меня есть функция, которая принимает кортеж, и я хочу перебрать членов кортежа по порядку. Моя текущая версия зависит от компилятора, потому что она использует параметры функции для распаковки членов кортежа (в std::make_tuple()). Я построил упрощ…
14 апр '15 в 13:05
2 ответа

Могу ли я иметь шаблонную функцию с переменным значением, возвращающую разные типы?

Я делаю некоторую десериализацию из байтового массива и сделал шаблон Variaad ExtractData, чтобы он работал как QByteArray data; // (this works just like std::vector<char>) std::vector<std::any> values = ExtractData<float, char>(da…
23 сен '18 в 16:57
1 ответ

Варианты шаблонов вопрос

Я пытаюсь написать общий код для сравнения std:: functions с помощью метода шаблона target(). Вот мой не универсальный пример кода: #include <cstdio> #include <functional> static void bar() {} static void baz() {} bool cmp(std::function&…
04 июл '11 в 10:56
2 ответа

Распаковка пакета параметров в C++

У меня две функции f а также g, f вычисляет его возвращаемое значение асинхронно и возвращает будущее. Теперь на основе нескольких возвращаемых значений fЯ хочу позвонить g, но я хочу убедиться, что вычисления значений f происходить параллельно. Рас…