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

Можно ли сохранить пакет параметров шаблона, не расширяя его?
Я экспериментировал с вариативными шаблонами C ++ 0x, когда наткнулся на эту проблему: template < typename ...Args > struct identities { typedef Args type; //compile error: "parameter packs not expanded with '...' }; //The following...
22297 просмотров
schedule 04.11.2022

Шаблоны Variadic и новые
У меня есть этот шаблон класса: template<class... T> class Test { std::vector<TestCase*> test_cases; public: Test() { // Here, for each T an instance should be added to test_cases. test_cases.push_back((new T)...); } };...
781 просмотров
schedule 10.12.2022

Являются ли вариативные шаблоны потенциальным раздуванием кода?
Шаблоны Variadic позволяют переписывать определенные виды функций в более четкие и безопасные версии. Это случай printf , как показано в Википедии : void printf(const char *s) { while (*s) { if (*s == '%' && *(++s) != '%')...
1403 просмотров
schedule 16.01.2023

Почему использование пакета параметров целочисленного значения запрещено после пакета параметров типа в С++ 11?
Вопрос почти не имеет смысла без примера. Итак, вот что я пытаюсь сделать. В целом С++ позволяет следующее: template<class T, class U, T t, U u> void func() {} func<char, int, 'A', 10>(); Но похоже, что его естественное...
398 просмотров
schedule 15.02.2023

Определите несколько методов с параметрами из вариативных шаблонов
Я хочу определить базовый класс шаблона таким образом, чтобы он принимал переменные аргументы шаблона и определял виртуальный метод для каждого аргумента, где параметр — это тип аргумента. Например. Base<int, bool, string> должен дать мне...
1749 просмотров
schedule 11.03.2023

С++ Попытка создать "промежуточный" функтор
Под «промежуточным» функтором я подразумеваю: нормальный функтор, в котором один из аргументов может быть указан во время вызова. Проблема в том, что у меня есть временная шкала анимации (по сути, скалярные значения в определенных кадрах), и вывод...
267 просмотров
schedule 03.08.2022

Шаблоны Variadic и ожидаемая ошибка типа
Я работаю (в основном в учебных целях) над собственной реализацией tuple и только что столкнулся с проблемой. У меня есть следующий код: namespace Rose { template<typename T> struct RemoveReference { typedef T Type;...
793 просмотров
schedule 06.09.2022

Сопоставление таблицы с картой с использованием вариативных шаблонов и повышения
Я пытаюсь скопировать таблицу базы данных на карту, где ее первичный ключ будет ключом карты, а остальные столбцы являются экземплярами boost:vector. Я новичок в повышении, а также вариативных шаблонах. Я пытался написать оболочку, но она отлично...
393 просмотров

вариативные шаблоны: недопустимое использование выражения void
Я пытаюсь создать общую коллекцию для событий, чтобы ее можно было повторно использовать для различных наборов событий. Играя с вариативными шаблонами, я наткнулся на ЭТОТ ответ , который помог мне в моем примере: #include...
1586 просмотров
schedule 27.04.2022

Переадресация вызовов базового класса с вариативным шаблоном
В C ++ до 11 у меня было что-то вроде этого: template<class T,class U,class V> struct Foo : T,U,V { bool init() { if(!T::init() || !U::init() || !V::init()) return false; // do local init and return true/false } };...
2134 просмотров
schedule 07.11.2022

Использование вариативных шаблонов для реализации Get(Tuple) привело к тому, что пакеты параметров не были расширены с ошибкой ‘’
Я хочу реализовать что-то вроде std::get(std::tuple), имея класс кортежа: template<typename ... Types> class Tuple; template<> class Tuple<> {}; template<typename First, typename ... Rest> class Tuple<First, Rest...>:...
1452 просмотров
schedule 19.06.2023

Как сделать вариативный is_same?
Как я могу создать шаблон класса, который возвращает, равен ли какой-либо из его вариативных типов первому типу. Я хочу иметь возможность сделать это: is_same<T, A, B, C>::value; // true if T is one of A, B or C И если T равен любому...
5276 просмотров
schedule 09.01.2023

Есть ли какой-нибудь трюк, который позволил бы мне передать манипуляторы потока функции шаблона с переменным числом аргументов?
Я пытался написать потокобезопасную оболочку для std::cout и решил, что сейчас самое время изучить некоторые вариативные шаблоны. Вот так. Затем, когда я подумал, что понял правильно, я заметил, что это не работает с std::endl. Возьмите...
693 просмотров
schedule 26.05.2023

Рекурсивное расширение шаблонов Variadic для классов и функций
Итак, я пытался немного больше понять вариативные шаблоны. Моя цель состояла в том, чтобы получить все типы, расширить их и распечатать. Я смог сделать это для функции (нашел несколько примеров), но я не был в состоянии сделать это для класса. Здесь...
4181 просмотров

Фильтрация типов пакета параметров
Я хотел бы знать, возможно ли отфильтровать типы, переданные в вариативный шаблон (на основе шаблона предиката), чтобы создать другой вариативный шаблон, содержащий те типы, которые удовлетворяют предикату: /** Filter a parameter pack */...
3273 просмотров

Написание базового варианта для вариационного шаблона
Я реализую фильтр времени компиляции, который в основном просто берет вектор времени компиляции (переменный пакет аргументов) Enums, перебирает его и пытается найти, включен ли определенный Enum в вектор. Предположим, у нас есть перечисления:...
929 просмотров
schedule 04.02.2024

Ошибка компилятора или нестандартный код? - Захват шаблона Variadic в лямбда
У меня есть следующий код С++ 11; template<typename... T> int g(T... t) { return 0; } template<class... Args> void f(Args... args) { auto lm = [&, args...] { return g(args...); }; lm(); } int main() { f(2, 5, 7);...
944 просмотров

Генерация сложного наследования вариативного шаблона
Поиграв немного с вариативными шаблонами, чтобы посмотреть, что с ними можно сделать, я обнаружил, что задаюсь вопросом: Предположим, у меня есть класс, который может принимать несколько других классов в качестве параметров шаблона, каждый из...
678 просмотров
schedule 29.04.2023

Шаблон C++ позволяет отказаться от квалификатора ссылки const
Почему этот код компилируется? (проверено с помощью g++ и clang++) Следующий код предназначен для фабричного метода, который принимает функцию и создает из нее пересылающую функцию std::function. Как видите, лямбда внутри принимает const...
930 просмотров
schedule 27.05.2022

вывести тип возврата лямбда в шаблоне
Здравствуйте, я пытаюсь создать функцию, которая будет вызывать функцию, предоставленную в качестве параметра с некоторыми предоставленными аргументами, и возвращать ее значение, мой текущий подход выглядит следующим образом. #include...
2348 просмотров