Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
1

Auto И шаблоны

16.08.2019, 16:17. Показов 991. Ответов 7
Метки нет (Все метки)

Что уместнее было бы использовать из двух вариантов? Или нет разницы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
void foo(auto a, auto b)
{
    std::cout << a << b;
}
 
//или это
 
template <class a>;
void foo(a a1, a a2)
{
    std::cout << a1 << a2
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2019, 16:17
Ответы с готовыми решениями:

«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами».
«Шаблоны шаблонов» vs «шаблоны с параметрами-шаблонами». Есть ли разница в этих понятиях? Если...

Шаблоны. Плохо понимаемые моменты из книги "Шаблоны С++. Справочник разработчика". (Вандевурд, Джосаттис)
Так как изучаю эту книгу, то в некоторых местах возникают вопросы. Чтобы не плодить много тем,...

Auto&& and decltype(auto)
Приведите пример различия поведения заполнителей auto&amp;&amp; и decltype(auto).

Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны
В одномерном массиве, состоящем из п вещественных элементов, вычислить: 1) количество элементов...

7
зомбяк
1531 / 1176 / 332
Регистрация: 14.05.2017
Сообщений: 3,815
16.08.2019, 16:24 2
Цитата Сообщение от Ju-87 Посмотреть сообщение
template <class a>;
Точка с запятой лишняя.
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
16.08.2019, 16:30 3
Цитата Сообщение от Ju-87 Посмотреть сообщение
Что уместнее было бы использовать из двух вариантов? Или нет разницы?
Без разницы. А первом варианте писать меньше.
Только лучше использовать ссылки
C++
1
2
3
4
5
6
7
8
9
10
11
12
void foo(const auto &a, const auto &b)
{
    std::cout << a << b;
}
 
//или это
 
template <class a>
void foo(const a &a1, const a &a2)
{
    std::cout << a1 << a2
}
1
"C with Classes"
1485 / 1287 / 485
Регистрация: 16.08.2014
Сообщений: 5,413
Записей в блоге: 1
16.08.2019, 16:35 4
Цитата Сообщение от Ju-87 Посмотреть сообщение
Или нет разницы?
auto в аргументе разрешено вроде бы как только в лямбда-выражениях

Добавлено через 2 минуты
но если было бы разрешено то без разницы было бы так:
C++
1
2
template <class A, class B>;
void foo(A, B);
1
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
16.08.2019, 16:36 5
Цитата Сообщение от _stanislav Посмотреть сообщение
auto в аргументе разрешено вроде бы как только в лямбда-выражениях
В gcc можно и в функциях
1
"C with Classes"
1485 / 1287 / 485
Регистрация: 16.08.2014
Сообщений: 5,413
Записей в блоге: 1
16.08.2019, 16:43 6
Цитата Сообщение от Ju-87 Посмотреть сообщение
Или нет разницы?
а так, механизм вывода типа для шаблонов и для авто одинаковый, с небольшим отличием.

Добавлено через 1 минуту
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В gcc можно и в функциях
очень полезная фитча?
0
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
16.08.2019, 16:45 7
Цитата Сообщение от _stanislav Посмотреть сообщение
очень полезная фитча?
Довольно удобная, скажем так.
0
Don't worry, be happy
17142 / 10019 / 1933
Регистрация: 27.09.2012
Сообщений: 24,944
Записей в блоге: 1
16.08.2019, 21:25 8
Цитата Сообщение от Ju-87 Посмотреть сообщение
Или нет разницы?
Вообще-то, это совершенно разные шаблоны.
В первом шаблоне аргументы могут быть разного типа, во втором - только одного типа a.
Код
C++
1
foo(10, 10.0);
нормально соберется с первой foo и не соберется со второй.
Вам нужны аргументы одного типа или же нет?
Заменой первому шаблону может стать такой:
C++
1
2
3
4
5
template <class A, class B>
void foo(A a, B b)
{
    std::cout << a << b;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2019, 21:25

Помощь в написании контрольных, курсовых и дипломных работ здесь.

auto
Хочу сделать автомат. переменную auto int x; auto double f; Ругается. Как...

Auto (does not name a type)
#include &lt;iostream&gt; #include &lt;typeinfo&gt; #include &lt;vector&gt; using namespace std; class Foo {...

Спецификатор типа auto
int num1 = 0; auto ptr1 = &amp;num1; // 1. ok: ptr1 is (int *) auto calculates the (int *)...

Можно ли заменить на auto ?
static ExtraItem * GetExtraItemByIndex(size_t Index) { static List &lt;ExtraItem *&gt; ::iterator...


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

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

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