![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
trupca |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
есть примерно такой код. его отлично хавает гцц, но не переваривает msvc10. чяднт? ругается на строку: struct foo<T>::bar foo<T>::operator[](int x). спрашивается а как ещё о можно разрешить доступ к struct bar из области видимости foo<t>?
|
|||
|
||||
DarthTon |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: нет Всего: 6 |
Как-то так:
|
|||
|
||||
trupca |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
спасибо это помогло. если не затруднит вы не могли объяснить смысл данной синтаксической конструкции? почему нужно писать именно так?
|
|||
|
||||
NoviceF |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
обычно, чтобы рассудить 2 компилятора, нужно лезть в стандарт, а это, как правило, дело не благодарное. Вообще, насколько я понимаю, возможность употребления слова struct при объявлении переменных (и типов возвращаемых значений) сохраняется только для совместимости с Си, и в плюсах им никто не пользуется. Что касается данного случая, то мой опыт общения с шаблонами говорит, что конструкция
является правильной и корретной, т.к. без слова typename компилятор не должен понимать, что такое bar, ведь вполне может быть, что у какого-то типа определена константа с таким именем. typename как раз и призван указать компилятору, что речь идёт о типе. Кстати, gcc допускает и использование слова class:
выглядит это странно и похоже на какую-то вольность со стороны gcc. |
||||
|
|||||
trupca |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 22.7.2008 Репутация: нет Всего: нет |
понятно. спасибо большое. ну а что до gcc то за его вольности я его и люблю ))
|
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: нет Всего: 2 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |