Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2017, 19:51   #1
Aoizora
Заблокирован
 
Регистрация: 11.11.2016
Сообщений: 261
По умолчанию Вывод типа возвращаемого значения шаблона

Есть такая функция, которая принимает итераторы контейнера и возвращает элемент по значению, а не по ссылке:

Код:
template <typename It>
auto ret_elem(It begin, It end) -> typename std::remove_reference<decltype(*begin)>::type
{
	return *begin;
}
Не совсем понимаю, почему при выводе типа возвращаемого значения требуется ключевое слово typename. Компилятор по умолчанию считает, что любой член типа It шаблона не является определением типа, и поэтому нужно явно использовать слово typename. Так что ли?
Где об этом подробно написано?
Aoizora вне форума Ответить с цитированием
Старый 02.06.2017, 20:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Т.к. тип std::remove_reference<Е>::type зависит от шаблонного параметра Е (в одной из специализации он может быть типом, в другой - нет) , то он зависимый (dependent type). В С++ перед зависимыми типами надо ставить typename.
p51x вне форума Ответить с цитированием
Старый 02.06.2017, 21:00   #3
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

можно использовать
Код:
std::remove_reference_t<decltype(*begin)>
Croessmah вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятное объявление возвращаемого типа New man Общие вопросы C/C++ 2 06.10.2016 03:25
тип возвращаемого значения не соотвецтвует типу функции Мария1111 Помощь студентам 1 16.11.2012 12:50
Получить текст возвращаемого значения вместо кода sectors70 Win Api 5 16.09.2012 00:23
Использование строки в типе возвращаемого значения. kuy Общие вопросы C/C++ 7 13.05.2012 11:42
тип возвращаемого значения функции sqrt SAMOUCHKA Помощь студентам 2 20.09.2011 19:00