![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: 3 Всего: 3 |
GCC (версии 3.2.3, 3.3.3 и 4.1.2) выдают ошибку main.cpp:50: error: expected primary-expression before ‘int’ main.cpp:50: error: expected `;' before ‘int’ На строчке m_inner.func<int>(); Пример максимально упрощен. В реальном проекте ошибка выглядит по-другому: " syntax error before `>' token" Интеловский компилятор (9.1) прекрасно справляется. Это у gcc какие-то проблемы, или я чего-то не понимаю? -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Похоже, что так. g++ 4.2.3 и 4.3.0 выдали аналогичное. Запости им в багзиллу. Нет, не так. Дело в том, что данная конструкция должна записаться так:
Это сообщение отредактировал(а) JackYF - 6.4.2008, 17:28 |
|||
|
||||
| SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: 3 Всего: 3 |
JackYF, Решил полазить по их багзиле. Залез в раздел Known not-bugs. Начал листать, что там понаписано, и обнаружил весьма и весьма интересную форму записи. Проблема там описывалась совсем другая, но пример синтаксиса помог разобраться с моей проблемой:
P.S. Офигеть! Добавлено через 3 минуты и 19 секунд Старая прописная истина: Если пишешь что-нибудь сколько-нибудь серьезное, то обязательно, ОБЯЗАТЕЛЬНО нужно попробовать пособирать на нескольких популярных компиляторах. Добавлено через 3 минуты и 58 секунд JackYF, Я быстрее Это сообщение отредактировал(а) SaDFromSpb - 6.4.2008, 17:31 -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| georain |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
Тоже с этим столкнулся.
Ппц, это что такое? Это в стандарте то есть? У меня ещё и так работает:
и так:
Причём icc опять всё компилирует без проблем:
Добавлено через 12 минут и 27 секунд OFF TOPIC: Кто нибудь знает как в gcc обойти проблему невозможности сделать в классах специализацию шаблонных методов (ну кроме как делать шаблонные функции вне класса)? |
||||||||
|
|||||||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
По стандарту специализация шаблона должна быть за пределами класса. Что самое прискорбное, так это то, что MSVC понимает специализацию только внутри класса, а снаружи нет. |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
да слово template говорит о том, что после него точно инстанциация шаблона это не стандартное поведение |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| georain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
OFFTOP:
Как сделать специализацию функции func() ?
|
|||
|
||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Это сообщение отредактировал(а) UnrealMan - 19.6.2008, 20:03 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
del
Это сообщение отредактировал(а) vinter - 19.6.2008, 20:18 |
|||
|
||||
| georain |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
А как сделать специализацию функции для всего шаблонного класса? Т.е. чтобы для всех классов этого шаблона функция была специализированна одинаково? Заказал "C++ Templates. The Complete Guide". |
||||
|
|||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
| georain |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 28.11.2006 Где: Санкт-Петербург Репутация: нет Всего: нет |
||||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |