Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
1

Не работает код. Шаблоны с переменном числом параметров

26.12.2016, 19:57. Показов 589. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Опять Я Здрасте) Первый раз использую эту возможность, но у меня выдает ошибки. Написал простенький пример, все равно выдает ошибки. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
template< typename T >
T sum( const T& head ) {
    return head;
}
 
template< typename T, typename... Args >
T sum( const T& head, Args... args ) {
    return head + sum( args... );
}
 
void main()
{
    std :: cout << sum( 1, 4, 5 );
}
Вот ошибки:
1>c:\users\bretbas\documents\visual studio 2012\projects\template\template\source.cpp(8): error C2143: syntax error : missing ',' before '...'
1>c:\users\bretbas\documents\visual studio 2012\projects\template\template\source.cpp(9): error C2061: syntax error : identifier 'Args'
1>c:\users\bretbas\documents\visual studio 2012\projects\template\template\source.cpp(15): error C2780: 'T sum(const T &)' : expects 1 arguments - 3 provided

Ругается, что он типо не знает, что такое Шаблоны с переменным числом параметров Как я понял
Прогуглил, написано, чтобы использовать эту фичу нужно подключить -std=c++11
Но как и где? Никогда не подключал такие конфиги в своей среде. Помогите пожалуйста. Где в Visual Studio 2012 включается эта возможность?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2016, 19:57
Ответы с готовыми решениями:

Вызов функции по имени при переменном числе параметров
Добрый день. Возникла задача создать файл, в котором будут записаны инструкции по отрисовке...

Функции с переменным числом параметров: объяснить код
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int sum(int k, ...) { int s =...

Функция с переменным числом параметров, как узнать кличество переданных параметров?
Добрый вечер, можно не использовать int n, а каким то другим способом узнать количество переданных...

Функция с переменным числом параметров находящая максимальный элемент в списке параметров
Написать функцию с переменным числом параметров:Максимальный из элементов в списке параметров,...

9
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
26.12.2016, 20:16 2
Цитата Сообщение от Bretbas Посмотреть сообщение
Прогуглил, написано, чтобы использовать эту фичу нужно подключить -std=c++11
Но как и где? Никогда не подключал такие конфиги в своей среде. Помогите пожалуйста. Где в Visual Studio 2012 включается эта возможность?
Этот ключ для gcc\clang подходит.
В VS сразу работает.
А если не работает, то значит твоя версия данную возможность не поддерживает. И никакими ключами ее не включить, только обновляться.
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
26.12.2016, 20:19  [ТС] 3
DrOffset,
И никакими ключами ее не включить, только обновляться.
е-мое, а как там обновится то? о_О
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
26.12.2016, 20:26 4
Цитата Сообщение от Bretbas Посмотреть сообщение
е-мое, а как там обновится то? о_О
Ну поставить, например, VS 2013 или VS 2015. Там эти возможности точно есть.

Добавлено через 1 минуту
А вообще, идем, значит, сюда: https://msdn.microsoft.com/ru-... 67368.aspx
Смотрим табличку и убеждаемся, что в VS 2012 поддержки variadic templates нет.
1
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
26.12.2016, 20:32  [ТС] 5
DrOffset,
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну поставить, например, VS 2013 или VS 2015. Там эти возможности точно есть.
Я не могу поставить, так как либы PhysX скомпилированы для VC11, а если перейду на VS 2015, то они у меня не будут работать

Смотрим табличку и убеждаемся, что в VS 2012 поддержки variadic templates нет.
Тоесть даже после обновления студии они все равно не заработают? о_О
0
GbaLog-
26.12.2016, 20:35
  #6

Не по теме:

А вот без доп. метода и рекурсии.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <utility>
 
template<typename Tp, typename... Args>
Tp sum( Tp&& arg, Args&&... args )
{
    Tp ret{std::forward<Tp>(arg)};
    int dummy[] { std::forward<Args>((ret += args, 0))... };
    (void)dummy;
    return ret;
}
 
int main()
{
    std::cout << sum(1, 2, 4, 5);
}

0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
26.12.2016, 20:39 7
Цитата Сообщение от Bretbas Посмотреть сообщение
Тоесть даже после обновления студии они все равно не заработают? о_О
Что-то мне не понятно, что тебе не понятно.
Если ты обновишь студию (читай удалишь 2012 и поставишь 2013), то все заработает.
Если ты под обновлениями понимаешь накатывание сервис-паков на 2012 студию, то нет, в этом случае не заработает.
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
26.12.2016, 21:06  [ТС] 8
DrOffset,
Цитата Сообщение от DrOffset Посмотреть сообщение
Если ты под обновлениями понимаешь накатывание сервис-паков на 2012 студию, то нет, в этом случае не заработает.
Ну вообщем-то я понимал, что нужно накатывать сервис-паки Если вот это установлю, не знаешь, заработает? Ссылка
0
18840 / 9839 / 2408
Регистрация: 30.01.2014
Сообщений: 17,280
26.12.2016, 21:10 9
Bretbas, ох...
Я выше написал, что VS 2012 в этом отношении ничего не спасет, сервис-паки в том числе.
Просто внимательно прочитай мой пост выше
0
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
26.12.2016, 21:12  [ТС] 10
DrOffset
У меня уже давно скачать VS 2015, не ставлю его только потому, что тогда PhysX не смогу использовать
0
26.12.2016, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2016, 21:12
Помогаю со студенческими работами здесь

Шаблоны и функторы как callback для класса свойства объекта. Код работает - но не должен
Здравствуйте! Хочу написать реализацию класса свойства на шаблоне. Т.е есть объект, он инициирует...

не пойму где ошибка с постоянным числом код работает с введенным с клавиатуры нет
само задание таково: Переменная flag возвращает значение истина, если:Целая часть x – четное число,...

Шаблоны с переменным числом аргументов
Написал шаблон функции с переменным числом аргументов которая считает сумму своих аргументов....

Функция с переменным числом аргументов (через шаблоны)
Доброго времени суток! Встал вопрос с реализацией такой функции. template&lt;typename... Args&gt;...

Шаблоны без параметров, что это?
Наткнулся во включаемом файле iosfwd в Visual Studio 2013 на такое определение:template&lt;&gt; struct...

Функция с переменным числом параметров
Хочу написать функцию очищающую произвольное число MaskEdit.Выдает ошибку в описании функции. Вот...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru