| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Можно ли вернуть из шаблонной функции value_type |
| Автор: disputant 23.2.2012, 22:37 |
| Заинтересовал такой вопрос - пусть есть шаблонная функция вида template<typename RandomIterator> void func(RandomIterator i) {...} В ней легко и просто работать с типом, на который указывает итератор - typedef typename iterator_traits<RandIter>::value_type Value; и вперед... А как сделать функцию, которая возвращает значение этого типа? Что-то вроде template<typename RandomIterator> iterator_traits<RandIter>::value_type func(RandomIterator i) {...} ? Такое в принципе возможно? |
| Автор: disputant 24.2.2012, 05:55 | ||
Спасибо, и правда работает! Никак не могу прочувствовать этот typename - где его надо ставить, где не надо... Прямо как артикли a и the в английском - тоже вечно они у меня не к месту Нет какого-то ПРОСТОГО до тупизны правила, чтоб даже до меня дошло? |
| Автор: Result 24.2.2012, 08:12 | ||
Scott Meyers Effective C++ Third Edition, 55 Верных советов улучшить структуру и код ваших программ - правило 42. |
| Автор: newbee 24.2.2012, 08:29 |
| Когда из(-под) шаблона выводится тип, нужно ставить typename. |
| Автор: borisbn 24.2.2012, 11:53 |
| Билдерюга этого НЕ требует. Как-то я взял свой проект с билдера (не весь, а несколько исходников) и попытался откомпилировать в студии. Долго тупил, зачем от меня требуют typename... |
| Автор: volatile 24.2.2012, 23:19 | ||
Студия почти русским языком говорит что надо делать:
|