![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Pulse69 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 1 Всего: 10 |
Всем привет! Вот возник такой интересный вопрос:
Если возвращаемое значение в функции сделать шаблонным, а потом написать специализацию этой функции, компилятор отказывается принимать такую конструкцию. Например, так
Справедливо для MSVC. Сознаюсь, особо нет времени копаться в стандарте, так что может ли кто-нибудь разъяснить мне почему этого нельзя сделать? Это сообщение отредактировал(а) Pulse69 - 6.11.2007, 13:54 --------------------
Ctrl+Alt+Reset |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Все правильно, перегружать возвращаемое значение нельзя.
что компилятор должен делать если ты где нибудь в программе сделаешь так
К тому-же правильнее писать так:
Это сообщение отредактировал(а) Lazin - 6.11.2007, 14:28 |
||||
|
|||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
компилятор, по-видимому не понимает, что такое CharType а я не помню, как оно правильно пишется.... вроде
|
|||
|
||||
Pulse69 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 1 Всего: 10 |
Вообще-то, я полагал, что перегрузка функций и специализация шаблонов - немного разные вещи. А вот за это спасибо! Действительно, ведь в параметрах после спецификации пишется явный тип, почему же в возвращаемом значении должно быть по другому! Alek86, так же спасибо за участие! --------------------
Ctrl+Alt+Reset |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Представь что у тебя такой шаблон используется с разными типами, тогда компилятор должен будет сгенерировать функции отличающиеся только возвращаемыми значениями, а это делать нельзя. Хотя не проверял. |
|||
|
||||
Alek86 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
Lazin, по этому поводу хорошо написано у Майерса или Рихтера (я их путаю...)
|
|||
|
||||
Pulse69 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 28.4.2006 Где: Хабаровск Репутация: 1 Всего: 10 |
Да, перегрузку функций по возвращаемому значению делать нельзя. А типизированный шаблон с другим возвращаемым значением - несколько иное. Во-первых, при вызове шаблонной функции всегда подразуемвается указание реальных типов. Если в параметрах типы не указываются, компилятор может применить свою супер-пупер дедукцию и догадаться, что там должно быть. В нашем случае случае, он не может определить тип возвращаемого значения, однако такая функция может быть вызвана с явным указанием типа.
Вот примерно это мне и надо было. Ещё раз всем спасибо! --------------------
Ctrl+Alt+Reset |
|||
|
||||
Dims |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1016 Регистрация: 21.11.2006 Репутация: 1 Всего: 11 |
А что делают пустые угловые скобки?
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Указывают на то, что дальше будет специализация шаблонов. И не обязательно пустые, достаточно указать не все парамтры шаблона. Далее курить стандарт. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |