Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484

Variadic templates

01.12.2019, 14:35. Показов 2100. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как обращаться напрямую к элементам Args?
C++
1
template<typename... Args>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2019, 14:35
Ответы с готовыми решениями:

Variadic Templates - как обращаться к аргументам variadic-функции?
Всем привет! Наверное, рано мне ещё с моими скудными знаниями в это лезть, но, изучив шаблоны и вариадик-функции, я, естественно, горю...

Variadic templates
А как бы так исхитриться, чтобы шаблонная функция, использующая Variadic templates узнала размер передаваемых ей параметров с тем, чтобы,...

Variadic templates
как можно сделать чтобы функция принимала бесконечное количество объектов std::string? (только их) я пробовал вот так: template&lt;const...

23
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
01.12.2019, 19:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
Не должно быть там лишнего кода.
я не имел ввиду бинарный код а обычный с++ код.
C++
1
2
3
4
5
6
7
8
9
10
template<typename... Args>
void f()
{
    std::tuple<Args...> t; // кортеж который не нужен в данном участке кода
    std::remove_reference_t<decltype(std::get<1>(t))> var; // переменная типа double
    // все было ради того что бы достать тип
    
    std::cout << std::is_same<double, decltype(var)>::value; // проверяем, что действительно double.
    
}
к тому же для классовых типов в таком случае будет вызван конструктор.
Например если вызвать вышеуказанную функцию вот так:
C++
1
2
3
4
5
6
7
8
9
struct Foo
{
    Foo() {std::cout << "Test";}
};
 
int main()
{
    f<int,double, Foo>();   
}
то сработает конструктор по умолчанию для Foo, а ведь мы хотели всего навсего взять тип второго шаблонного аргумента.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
01.12.2019, 19:31
Evg, тот код просто не отвечает на вопрос ТС. ТС спрашивал про шаблонный класс, с параметрами-типами, а ему предложили функцию, c аргументами-переменными. При этом не понятно, чем мой вариант из #8 сложнее чем из #6.

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
если я правильно сванговал хотелку ТС'а,
Нечего тут ванговать. ТС же ясно написал:
Цитата Сообщение от ReYalp Посмотреть сообщение
нельзя взять к примеру первый тип t0 и создать его переменную в какой-то функции этого шаблонного класса?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 30
01.12.2019, 20:05
Цитата Сообщение от Undisputed Посмотреть сообщение
а обычный с++ код
Я как бы не специалист по Си++, потому и спрашиваю. Мне кажется, что в постах #7 и #9 лишнего кода (текста программы) намного больше

Цитата Сообщение от Undisputed Посмотреть сообщение
Например если вызвать вышеуказанную функцию вот так:
Это всё-таки некультурное программирование. Хотя согласен, что в реальной жизни такое встречается

Цитата Сообщение от DrOffset Посмотреть сообщение
При этом не понятно, чем мой вариант из #8 сложнее чем из #6
Я его в первом прочтении не понял. После того, как тут начали уточнять, что речь идёт просто о типах шаблона, а не о параметрах функции, то я его понял

Цитата Сообщение от DrOffset Посмотреть сообщение
Нечего тут ванговать. ТС же ясно написал:
Пока всё это улеглось в голове, появилось подозрение, что в таком случае попросту неправильно создавать шаблон только из variadic'а. Если что-то создавать внутри шаблона, что совпадает с первым параметром шаблона, то это говорит о том, что у шаблона обязан быть в наличии первый параметр. Тогда его по идее правильно создавать вот так:

C++
template<typename T0, typename... Args>
...
используем T0
...
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
01.12.2019, 20:07
Цитата Сообщение от Evg Посмотреть сообщение
Тогда его по идее правильно создавать вот так:
Верно. Но это уже второй вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2019, 20:07

Variadic templates
1. как можно сделать чтобы передавались ссылки на переменные? (с variadic templates) 2. как вообще обращаться к переменным объявленным...

Variadic Templates
проблема только в переводе на русский, обычно это &quot;Шаблоны с переменным числом аргументов&quot; но такое длинное выражение долго не...

Variadic templates
typedef function&lt;double(double ...)&gt; fun; inline int sum() { return 0; } template &lt;typename ... Types&gt; double sum(double...

Result_of + variadic templates
Как здесь можно вывести возвращаемый тип функторов? res_t должен получиться типом которым они параметризуются.template &lt;typename ......

Variadic templates fail
Здравствуйте. У меня проблема, нужно реализовать в проекте функционал, который будет использовать шаблоны с переменным количеством...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru