Описание тега parameter-pack

1 ответ

Реализация класса доступа, созданная из пакетов параметров шаблона

Я хотел бы создать все States в MachineT как shared_ptr<T> затем получите к ним доступ по имени типа. В следующем коде он относится к созданию экземпляра (конструктор MachineT) и способу доступа к состояниям (функция получения). Есть ли какой-…
2 ответа

Как в функции-шаблоне построить разные объекты в соответствии с их типами?

Вот мой вопрос, у меня базовый класс Base, два производных класса ClassA а также ClassB форма Base принимая только два аргумента и два класса ClassB0 а также ClassB1 полученный из ClassBпринимая три аргумента. Я хочу создать класс, соответствующий т…
1 ответ

шаблон шаблона пакет переменных параметров

Может кто-нибудь объяснить приведенный ниже код с пакетами параметров шаблона. Как это работает? Как в этом случае упаковываются и распаковываются параметры шаблона: template<typename Test, template<typename...> class Ref> //#6 struct is…
2 ответа

Проблема с sizeof... пакета параметров в enable_if

Следующий пример не работает во всех основных компиляторах: clang, gcc а также visual studio. Хотелось бы узнать, что с этим не так, вроде бы все очень просто: если sizeof...(TYPES) == 2 тогда он должен исключить одну перегрузку и принять другую, ес…
3 ответа

Типы фильтров в пакете параметров

Я пытаюсь создать отфильтрованный тип вариативного шаблона / пакета параметров, а также сохранить порядок. // example what im trying to accomplish template<typename... Args> struct query { using filtered = typename filtered<std::is_integral…
2 ответа

Инициализировать более одного неизвестного базового класса

Если базовый класс неизвестен библиотеке (он известен клиенту), обработать его конструктор не так уж и сложно. Код выглядит так: template<typename Parent> struct AAAAA : public Parent { using Parent::Parent; template<typename ...Args> AA…
13 фев '20 в 00:41
1 ответ

Почему руководство по выводам классов не работает при использовании typedef?

В фрагменте кода, который я сейчас пишу, я использую руководство по выбору классов. Вы можете найти фрагмент кода, сокращенный до простого (но бессмысленного примера) ниже: У меня есть классUser, который получает свой первый параметр шаблона из перв…
19 фев '20 в 02:30
3 ответа

Есть ли способ получить значения в пакете параметров без использования рекурсии?

Я видел много примеров кодов, которые используют рекурсию для извлечения значений из пакета параметров. Есть ли другой способ, кроме рекурсии, извлечь значения из пакета параметров?
26 апр '20 в 18:00
0 ответов

инициализировать объединение с помощью пакетов параметров шаблона

Я пишу движок с ECS и моделью, ориентированной на данные. Я пытаюсь избежать наследования и динамической отправки, чтобы не удалять кеш с каждымupdate()вызов. Я придумал следующее: struct transformComponent { const unsigned short id; vecShort p; tra…
0 ответов

Как использовать типы в пакете параметров?

Я новичок в С ++11 и пытаюсь создать функцию, которая запускает объекты template<size_t I, typename... T> void fun() { // use T here, may be something like // std::tuple_element<I, std::tuple<T...>>::type i; // i.run(); } Я не знаю…
09 янв '20 в 09:00
1 ответ

Передача указателей на член в объект функции из пакета параметров шаблона

Ниже приведен образец кода, демонстрирующий то, что я пытаюсь сделать. в основном я хочу передать более одного указателя на член в метод класса, который принимает std::function номер объекта и переменной или аргументы, которые передаются в целевой о…
11 янв '20 в 20:42
3 ответа

Используете ли признаки типа в пакетах параметров шаблона?

В приведенном ниже примере кода я пытаюсь проверить, являются ли аргументы функции указателями или нет std::is_pointer он отлично работает, если есть только один параметр, но как заставить его работать с большим количеством параметров, например, в п…
12 янв '20 в 00:54
1 ответ

Должен ли я явно показывать типы в пакете параметров при создании экземпляра шаблона?

У меня есть пример, иллюстрирующий мой вопрос: #include <utility> class Foo { public: Foo(int i) {} }; template<typename T, typename ...Args> class Bar { public: T t; Bar(Args &&... args) : t(std::forward<Args>(args)...) {}…
16 янв '20 в 12:05
1 ответ

"итерация" по std::tuple и доступ ко всем конструкторам

Я новичок в вариативных шаблонах, и мне сложно реализовать этот контейнерный класс. Я хочу взять список типов, а затем создатьstd::tuple что держит std::vectorsкаждого типа. Конкретная трудность, с которой я столкнулся, заключалась в том, чтобы "пов…
2 ответа

C++ - объявить указатель на функцию, возвращающую любой тип и получающую любое количество параметров

Мне было интересно, возможно ли написать что-нибудь похожее на это объявление (используя пакет параметров). decltype(auto) (*funcPtr)(...); Если возможно, хотелось бы также узнать об альтернативных способах объявления такого указателя.
01 фев '20 в 18:04
1 ответ

Конструктор пакета параметров, скрывающий определяемое пользователем преобразование в шаблоне класса

Я пишу простой шаблон класса для математических векторов. У меня есть в шаблоне шаблон конструктора с использованием пакета параметров, чтобы вектор можно было построить с переменным количеством параметров: template <unsigned int N, typename T&gt…
3 ответа

C++: использование пакета параметров в конструкторах?

#include <iostream> class A { public: A(bool b, int i) : b_(b) , i_(i) {} void print() { std::cout << b_ << " " << i_ << "\n"; } private: bool b_; int i_; }; class B { public: B(double d) : d_(d) {} void print() { std::…
13 фев '20 в 16:24
1 ответ

Каков самый простой способ обработать значения пакета параметров шаблона в правильном порядке без использования свернутых выражений (C++11)

Я хотел бы перенести следующий код на C++11: template<unsigned i> static void bar() { /* some code with compile-time optimizations for each value i */ } template <unsigned... I> void f() { ((bar<I>()),...); } Порядок вызова 'bar' д…
12 мар '20 в 04:00
1 ответ

Рекурсивная распаковка пакета шаблонов для функции без параметров

Я пытаюсь создать шаблон структуры с пакетом типов вариативного шаблона, который может вычесть сумму размеров всех переданных типов. Ниже вы найдете упрощенный пример, в реальном контексте вычисленный размер используется для создания дополнительных …
22 апр '20 в 19:13
1 ответ

Как развернуть шаблон пакета параметров "разархивированным" способом?

Скажем, у меня есть вариативная функция, foo: template <typename... Args> void foo(Args... args) { // some work } Я хочу иметь волшебную функцию, bar, который передает свои аргументы foo следующим образом: Скажи, если я позвоню bar(x, y, z); Э…
14 май '20 в 21:21