Variadic-Templates – вопросы и ответы

72
голоса
1
ответ
Я хочу реализовать следующее: template <typename Functor, typename... Params> void foo( size_t n /* magic goes here, producing function parameters p1, p2, etc. */ /* corresponding to the para...
2 дня, 20 часов назад einpoklum
74
голоса
1
ответ
После изучения шаблонов вариационной функции, которые используют рекурсию, мне интересно: Необходимы ли все экземпляры шаблонов, которые могут возможно во время выполнения программы, созданной во в...
2 дня, 20 часов назад AlwaysLearning
51
голос
1
ответ
Моя цель состоит в том, чтобы выпустить несколько потоков. Вы можете увидеть рабочий код ниже. Я пытаюсь использовать variadic шаблоны, но я потерпел неудачу. Как следующий код может быть "изменен"...
2 дня, 21 час назад ged
87
голосов
1
ответ
В моей программе у меня есть шаблоны классов, которые в основном являются обертками для специального назначения std :: function <..>. Минимальный пример: template <typename... Args> cla...
2 дня, 21 час назад ZACKERY ROBISON
71
голос
1
ответ
Возможно ли создать карту типа key-> во время компиляции, причем каждое значение key- добавляется при вызове экземпляра переменной функции? template <typename T, typename ... Args> void wr...
2 дня, 23 часа назад themagicalyang
80
голосов
1
ответ
У меня по существу та же проблема, что и этот вопрос , но, к сожалению, единственный опубликованный ответ теперь есть мертвая ссылка. В частности, используя VS2013 Update 4, я пытаюсь получить след...
2 дня, 23 часа назад Miral
51
голос
1
ответ
Учитывая простой шаблон variadoc template<typename... T> class A {}; и двух или более понятий C1 и C2 подобных template<typename T> concept bool C1() { ... }; как я могу применить конъю...
3 дня назад wimalopaan
51
голос
1
ответ
Предположим, у меня есть список параметров шаблона, которые можно увеличить. Я хочу увеличить заголовок этого списка. Вот код template<int N> struct Counter { static constexpr Counter<N+1&...
3 дня назад Bérenger
51
голос
1
ответ
Представьте, что у вас есть n наборов элементов в кортеже. Например, кортеж может быть std::tuple<topBottomStr, topBottomStr, topBottomStr> or std::tuple<fraction, fraction, fraction> Т...
3 дня назад Ivan
51
голос
1
ответ
Я пишу Factory для создания экземпляров подклассов базового класса, используя их имя, и используя этот (templated) завод с моим классом Foo . Не обращайте внимания на весь код, но, по сути, на фабр...
3 дня, 2 часа назад einpoklum
95
голосов
1
ответ
У меня есть этот код, который работает... пока что так хорошо: struct _TYPEIDSTR {}; typedef _TYPEIDSTR *TYPE_ID; template<class T> _TYPEIDSTR _TYPE_ID; template<class T> constexpr TYPE...
3 дня, 2 часа назад Max
88
голосов
1
ответ
Я все еще учась использовать вариативные шаблоны. В основном, что я хочу сделать, это взять STLContainer , содержащий элементы типа String . Контейнер STL не принимает фиксированное количество пара...
3 дня, 2 часа назад Carlos Brito
81
голос
1
ответ
При запросе еще одного вопроса недавно я наткнулся на какое-то странное поведение GCC при инициализации std::array с расширением пакета параметров, за которым следует другой элемент. Я уже обсуждал...
3 дня, 3 часа назад 5gon12eder
80
голосов
1
ответ
Этот фрагмент кода отлично работает с g++ и Clang: template <typename Sig, Sig& S> struct OpF; template <typename TR, typename ... Ts, TR (&f)(Ts...)> struct OpF<TR (Ts...), ...
3 дня, 3 часа назад user643005
52
голоса
1
ответ
Здесь я написал обертку потока для функции c потока pthread_create() . Он позволит вызывать любой метод для любого объекта и передавать любое количество аргументов этому методу. API: template <t...
3 дня, 22 часа назад footy
73
голоса
1
ответ
У меня есть Variadic Engine template class: template <typename ... Components> class Engine; Я хотел бы присвоить номер каждому компоненту во время компиляции, что эквивалентно их упорядочени...
3 дня, 23 часа назад Nicholas Cuthbert
188
голосов
1
ответ
У меня есть шаблон Foo, которому принадлежит T, и я бы хотел, чтобы у него был конструктор Variadic, который переводит свои аргументы в конструктор T: template<typename T> struct Foo { Foo() ...
3 дня, 23 часа назад acm
80
голосов
1
ответ
В какой момент вариационный шаблон считается "объявленным"? Это компилируется под clang++ 3.4, но не под g++ 4.8.2. template <typename T> const T &sum(const T &v) { return v; } templa...
4 дня, 1 час назад kec
63
голоса
1
ответ
Я делаю оболочку указателя метода следующим образом: template<typename OBJECT, typename... ARGS> method_wrapper<ARGS...> _getWrapper(OBJECT* object, void (OBJECT::*method)(ARGS...)) { /...
4 дня, 1 час назад ulak blade
52
голоса
1
ответ
Есть ли способ сгенерировать статическую функцию (указатель), которая: 1. имеет конкретную подпись. 2. Возвращает конкретное значение. 3. Игнорирует все аргументы. Что-то вроде: template<typenam...
4 дня, 4 часа назад Dorian
80
голосов
1
ответ
Предположим, что у нас есть функция template<typename T, typename... Args> T f(Args... args); и мы хотим вызвать f в другой функции template<typename... Args> void bar(Args... args) { /...
4 дня, 21 час назад 0xbadf00d
72
голоса
1
ответ
Рассмотрим это: template <typename Pack, template <typename...> class = std::tuple> struct foo; template <template <typename...> class P, typename... Ts, template <typename....
4 дня, 21 час назад prestokeys
88
голосов
1
ответ
У меня есть кусок кода, который компилируется и запускается без проблем в gcc-6.4.0. Однако в gcc-7.2.0 тот же код будет иметь следующие ошибки компиляции: gcc-7.2.0/bin/g++ -std=c++14 myerr.cc mye...
4 дня, 22 часа назад wizwx0
129
голосов
1
ответ
Я немного запутался, потому что как шаблон параметров по умолчанию, так и параметр вариационного шаблона должны быть последним параметром шаблона. Итак, каков хороший официальный синтаксис для моей...
4 дня, 23 часа назад Vincent
73
голоса
1
ответ
В чем проблема? struct fbe { char *fbtName; template<typename T, typename... vT> T(*funcptr)(T, vT... ); }; И в чем разница, которая скомпилировала его при написании? template<typename T, ...
5 дней назад kar
52
голоса
1
ответ
Рассмотрим следующий фрагмент кода: class Base { public: template <typename...Ts> void fun(Ts... vs) { cout << "Base::fun" << endl; cout << __FUNCSIG__ << endl; } }; t...
5 дней назад Arun
143
голоса
1
ответ
P0780 ("Разрешить расширение пакета в lambda init-capture") , одобренный для С++ 20, позволяет генерировать пакет элементов данных замыкания, помещая многоточие ( ... ) перед расширением пакета как...
5 дней, 1 час назад Vittorio Romeo
51
голос
1
ответ
Я хочу создать несколько sibling из std::fscanf() (я знаю, что это функция C). Итак, мой интерфейс выглядит примерно так: template <charT, char_traits, ...> std::size_t ts_scanf(is, format, o...
5 дней, 3 часа назад Incomputable
89
голосов
1
ответ
Я изменил свой подход с моего первоначального вопроса, чтобы вместо этого шаблонизировать весь класс и поместить его в переменный кортеж. Теперь я могу использовать методы получения и установки так...
5 дней, 19 часов назад Sailanarmo
72
голоса
1
ответ
Я написал небольшое, using выражение, чтобы иметь легкий доступ к типам VARIADIC параметров шаблона пакета. template<size_t index, typename args...> using get = std::tuple_element<index, s...
5 дней, 20 часов назад mic
198
голосов
1
ответ
У меня есть функция шаблона с аргументами шаблона varargs , например template<typename Args...> void ascendingPrint(Args... args) { /* ... */ } И я хочу написать template<typename Args...&...
5 дней, 22 часа назад towi
62
голоса
1
ответ
Следующие... class TestClass { public: TestClass(const char* szParam, int nParam) : m_strParam(szParam) , m_nParam(nParam) { Dbg_Printf("2 param constructor - %s, %d\n", m_strParam.c_str(), m_nPara...
5 дней, 23 часа назад Shammi
72
голоса
1
ответ
При запуске: template <typename T> struct CodeByType { static const int32_t Value = 7; }; template <> struct CodeByType<int> { static const int32_t Value = 1; }; template <type...
6 дней, 1 час назад Shmoopy
87
голосов
1
ответ
template <int I> struct int_ {}; template < typename ... Pack > struct thingy { void call() { f(???); } }; При создании экземпляра оно должно быть: struct thingy<int,char,double> ...
6 дней, 1 час назад Crazy Eddie
63
голоса
1
ответ
Я играю с SFINAE, и я пытаюсь проверить, что мои входы сделаны из ввода различных типов. Ошибка, предоставляемая clang, не очень помогает. Есть ли у вас какие-либо идеи? благодаря struct IsFree { }...
6 дней, 1 час назад sylvain
72
голоса
1
ответ
ITNOA Мой вопрос заключается в том, как использовать std::enable_if в сценарии частичной специализации шаблона с вариадическим шаблоном? например, у меня есть класс, который использует частичную сп...
6 дней, 2 часа назад sorosh_sabz
74
голоса
1
ответ
У меня есть код ниже для преобразования всех аргументов, переданных функции в csv: void Parse(ostream& os) { } template <typename T, typename... Args> void Parse(ostream& os, T t, Arg...
6 дней, 2 часа назад ARaj
63
голоса
1
ответ
Я использую "фиксированный тип списка времени компиляции" для моего проекта. Недавно я протестировал этот проект на совместимость с разными компиляторами, и я заметил, что clang (3.8) не может ском...
6 дней, 3 часа назад Matyro
89
голосов
1
ответ
Предположим, что у меня есть массив constexpr (известной границы) статической продолжительности хранения: constexpr T input[] = /* ... */; И у меня есть шаблон выходного класса, которому нужен паке...
6 дней, 4 часа назад Andrew Tomazos
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема