Вопросы по теме '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 просмотров
schedule
03.02.2023
вариативные шаблоны: недопустимое использование выражения 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 просмотров
schedule
23.01.2024
Фильтрация типов пакета параметров
Я хотел бы знать, возможно ли отфильтровать типы, переданные в вариативный шаблон (на основе шаблона предиката), чтобы создать другой вариативный шаблон, содержащий те типы, которые удовлетворяют предикату:
/** Filter a parameter pack */...
3273 просмотров
schedule
20.05.2023
Написание базового варианта для вариационного шаблона
Я реализую фильтр времени компиляции, который в основном просто берет вектор времени компиляции (переменный пакет аргументов) 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 просмотров
schedule
16.11.2022
Генерация сложного наследования вариативного шаблона
Поиграв немного с вариативными шаблонами, чтобы посмотреть, что с ними можно сделать, я обнаружил, что задаюсь вопросом:
Предположим, у меня есть класс, который может принимать несколько других классов в качестве параметров шаблона, каждый из...
678 просмотров
schedule
29.04.2023
Шаблон C++ позволяет отказаться от квалификатора ссылки const
Почему этот код компилируется? (проверено с помощью g++ и clang++)
Следующий код предназначен для фабричного метода, который принимает функцию и создает из нее пересылающую функцию std::function. Как видите, лямбда внутри принимает const...
930 просмотров
schedule
27.05.2022
вывести тип возврата лямбда в шаблоне
Здравствуйте, я пытаюсь создать функцию, которая будет вызывать функцию, предоставленную в качестве параметра с некоторыми предоставленными аргументами, и возвращать ее значение, мой текущий подход выглядит следующим образом.
#include...
2348 просмотров
schedule
19.11.2022