![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bsa |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
и еще mingw. У всех результат один. Похоже, nickless прав. Добавлено через 41 секунду
Кончай темнить! Признавайся! |
||||||||
|
|||||||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
zkv почти все рассказал уже тока что Это сообщение отредактировал(а) Fazil6 - 13.7.2007, 22:14 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
так. кое что начинает проясняться. тип вызываемой функции зависит от длины строки. Если длина строки равна размеру указателя (в моем случае 8 байт - кодировка UTF8 на amd64) то вызывается шаблонная, в противном случае нешаблонная. Правильно?
|
|||
|
||||
| nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
zkv,
Даааа... Похоже если строки одинаковой длины, тип получается const char[] и вызывается шаблонная, а если разной, const char * и вызывыется нормальная Это сообщение отредактировал(а) nickless - 13.7.2007, 22:33 -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нет. Все очень просто. Вопервых. Для того, чтобы шаблонная функция участвовала в перегрузке оба параметра должны быть одинакового типа. Во вторых при выборе между шаблоном и нешаблоном, нешаблон имеет приоритет если не нужны приведения. А если вспомнить, что тип строкового литерала совсем не указатель, а массив, то для вызова нешаблона нужно преобразование, причем сначала к указателю на const, а потом просто к char* поэтому при разрешении перегрузки она непривелигирована, а при разной длине шаблон вообще нипричем так как типы аргументов разные Это сообщение отредактировал(а) Fazil6 - 13.7.2007, 22:52 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ууу.... удивился. Капец.
А вообще, если я когда-нибудь сделаю такую перегрузку не в целях полахать, то стена меня ждет. Либо от себя (позже), либо от коллег. |
|||
|
||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |