![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Здравствуйте.
Несмотря на название, тему создал совершенно не для холивара, а чтобы разобраться, кто из них делает правильнее. Итак, имеется код:
http://liveworkspace.org/code/9f68394590f5...40a609b4cb6a373 LWS печатает
Builder же (под рукой только 5-й и BDSM) печатает для всех вызовов шаблонный вариант (ессно, я там заменил __PRETTY_FUNCTION__ на обычный вывод). Если же подправить вторую функцию так
то билдерюга при третьем вызове начинает выбирать её. Вопрос: кто более прав - gcc или builder в изначальном варианте ? Курение стандарта выело мозг напрочь. Эти 25 страниц раздела 13.3 Overloading ИМХО написаны инопланетянами ![]() Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Ну на RAD 2010
такой код
выдает foo<T> foo<T> foo так что усе одинаково -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Randajad |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 295 Регистрация: 15.3.2012 Репутация: 8 Всего: 8 |
Всем же известно, что билдер упорот.
На старых версиях даже буст не работал. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Randajad, поверь, не от хорошей жизни
![]() и всё-таки, как будет именно по стандарту, а не по реализации какого-либо компилятора ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
По моему далеко не только эти 25 страниц... ![]() borisbn, я не знаток (и не особый почитатель) стандарта, посему предлагаю свою дилетанскую версию. Здесь много знатоков, (каждый день заходят новые), если что поправят. В общем надо смотреть не "13.3 Overloading", а "14.8 Function template specializations" Наиболее близко к теме, что удалось найти быстрым просмотром:
В общем, как я понял в этой функции
deduction должен проигнорировать const и &. и выдать полный "checking succeeds" Ну а дальше,
Короче: д'Билдер не прав, а гсс прав! Ну или как-то так. Почитайте 14 раздел, вы больше моего поймете. (с моим знанием инглиша, прости господи.. ![]() |
||||||||
|
|||||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Упс, сорри. Все что выше к делу не относится.
Что-то мне показалось что у вас вторая функция тоже темплейтная. Поэтому смотрел специализацию шаблонов. Извиняюсь. Не то. Хотя чует мое сердце, что и при обыной перегрузке, cv-квалификаторы должны игнорироваться. (не только при специализации шаблонов.) В принцип это где-то есть в стандарте. Завтра еще посмотрю. borisbn, Сорри, еще раз. |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
![]() по теме не в курсе, но болею за жисиси, быдлер не внушает доверия ![]() |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
В топку 4,5,6,7 билдер, нашли чем проверять, они как состарились лет 10 назад и тогда не соответствовали стандарту. А то что новая версия соответствует стандарту я вам доказательство привел.
Так что не стоит разводить холивар. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
> В топку 4,5,6,7 билдер, нашли чем проверять
К сожалению это не просто проверка, а упрощенный кусок кода из большого реального проекта, написанного на 5 д`билдере. Мне его приходится поддерживать. В новых проектах я вообще VCL не использую. Я думаю, билдер “рассуждает“ след.образом: полного соответствия во второй функции нет, поэтому можно попробовать шаблонную. А уж она “скушает“ всё и не подавится. А вот прав ли он по поводу полного соответствия — как раз и есть вопрос Это сообщение отредактировал(а) borisbn - 21.10.2012, 07:55 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |