802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
1

Не работает variadic template

16.09.2017, 17:43. Показов 485. Ответов 14
Метки нет (Все метки)

привет. код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <typeinfo>
#include <iostream>
#include <deque>
using namespace std;
 
template<template<class...> class T, typename ... Args>
void foo(const T<Args...>&)
{
    
        (cout << typeid(Args).name() << endl)...;
        ((std::cout << typeid(Args).name() << std::endl)...); // или так
 
}
int main()
{
    std::deque<int> v;
    foo(v);
}
почему не работают строки в функции foo?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2017, 17:43
Ответы с готовыми решениями:

С++ 11 Variadic template
не работает, как правильно? template&lt;typename T, typename... ArgTypes&gt; struct...

Variadic template
Добрый день, господа. Будьте добры, помогите кто может. Есть у меня шаблонный класс ...

recursion with variadic template
#define NOT_COMPILE 1 #if NOT_COMPILE // так не компилится template &lt;class Type, unsigned...

Класс сигнала на Variadic Template
Добрый день! Написал класс &quot;сигнала&quot; при помощи variadic templates, но он почему-то не работает:...

14
Эксперт С++
1597 / 929 / 777
Регистрация: 06.02.2016
Сообщений: 2,414
Записей в блоге: 29
16.09.2017, 18:07 2
C++
1
((std::cout << typeid(Args).name() << std::endl),...); // нужная запятая, для fold expression
Добавлено через 6 минут
http://en.cppreference.com/w/cpp/language/fold
1
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
16.09.2017, 18:11  [ТС] 3
Peoples, все равно не работает... (с++14)
http://cpp.sh/7keqi
0
Эксперт С++
1597 / 929 / 777
Регистрация: 06.02.2016
Сообщений: 2,414
Записей в блоге: 29
16.09.2017, 18:14 4
Нужно С++17
Для С++14 тогда
C++
1
2
auto l={(std::cout << typeid(Args).name()<<std::endl,0)...};
(void)l;
1
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
16.09.2017, 18:15  [ТС] 5
Peoples, а приведение к void для чего?
0
494 / 208 / 70
Регистрация: 27.05.2016
Сообщений: 554
16.09.2017, 18:15 6
C++
1
(cout << ... << typeid(Args).name());
0
Эксперт С++
8429 / 4101 / 895
Регистрация: 15.11.2014
Сообщений: 9,214
16.09.2017, 18:16 7
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
приведение к void для чего?
что бы не смущать компилятор.
и не вызывать у компилятора вопросов:
а зачем тут неиспользуемая переменная?
1
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
16.09.2017, 18:18  [ТС] 8
notAll, не робит
http://cpp.sh/8tccv
0
Эксперт С++
1597 / 929 / 777
Регистрация: 06.02.2016
Сообщений: 2,414
Записей в блоге: 29
16.09.2017, 18:20 9
Ferrari F1, что бы не ругались на unused

Добавлено через 1 минуту
Цитата Сообщение от notAll Посмотреть сообщение
(cout << ... << typeid(Args).name());
Это тоже fold expression, следовательно на С++14 не пойдёт
0
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
16.09.2017, 18:21  [ТС] 10
Peoples, про fold expression вы из переведенного драфта узнали?
ибо я хз, чо это)
0
Эксперт С++
1597 / 929 / 777
Регистрация: 06.02.2016
Сообщений: 2,414
Записей в блоге: 29
16.09.2017, 18:22 11
Ferrari F1, Услышал где-то на форуме, а потом отсюда
Цитата Сообщение от Peoples Посмотреть сообщение
http://en.cppreference.com/w/cpp/language/fold
0
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
16.09.2017, 18:23  [ТС] 12
Peoples, этот експрессион я так понял был создан спецом как костыль под вариадик темплатес?
0
Эксперт С++
1597 / 929 / 777
Регистрация: 06.02.2016
Сообщений: 2,414
Записей в блоге: 29
16.09.2017, 18:25 13
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
костыль под вариадик темплатес
Ferrari F1, Я бы сказал упрощение до более понятного вида.
Потому что в своё время, распаковка параметров через initializer_list, отдельную промежуточную функцию, рекурсию повергла меня в ужас
0
DrOffset
16.09.2017, 23:58
  #14

Не по теме:

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
из переведенного драфта узнали?
Переведеный драфт описывает C++14, а не С++17.

0
802 / 532 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
17.09.2017, 09:29  [ТС] 15
DrOffset, sad but true...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2017, 09:29

Variadic template lambda capture
Доброго всем дня! Речь пойдёт об C++14, в котором стало возможным делать прямую передачу в...

Как правильно перебросить аргументы в variadic template?
всем привет, можете помочь пж, есть такая ф-ция: template&lt;typename ... Args&gt; inline wstring...

Visual Studio выдаёт ошибку при вынесении объявления функции с template в .h файл. Без template всё работает
Проект содержит три файла: Source.cpp, arrTreat.h, arrTreat.cpp. Source.cpp: #include...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.