Ознакомьтесь с нашей политикой обработки персональных данных
08:52 

По шаблонам c++

G-Shadow
Itsumo sobani, itsumo hitori
Доброе утро. Недавно писал код и встретил непонятные ошибки компилятора (ввиду недостатка знаний). Ошибки я обошёл, но вопрос остался.

Вопрос 1.
template typename<T> typedef std::list<T> ::iterator ListIt;
Я как-то сделал подобный шаблон итератора от списка указанного типа (потом писать ListIt, например), но он потерялся, а сейчас нивкакую не удаётся - то ему typename перед typedef, то просто typedef не нравится.

Вопрос 2.
paste.org.ru/?v1mace
Моя логика: Параметр шаблона никак не используется. Определение структуры от него не зависит. Список из этих структур.
Однако компилятор требует либо typename перед определением итератора, либо можно вынести определение структуры из класса (не меняя вообще). А в таком виде пишеи, что MyList зависимый (от чего?) тип. Причём тока если я делаю итератор. Просто объявить MyList X; без проблем.

@темы: Вопрос, C++

Комментарии
2014-12-16 в 13:40 

Flex Ferrum
IDDQD - Команда молодости нашей, команда, без которой мне не жить.
По первому вопросу - потому что такая фишка появилась только начиная с C++11, и в этой конструкции вместо typedef надо использовать using.
По второму вопросу - ну, gcc доходчиво объясняет. :) У тебя MyStruct косвенно зависит от шаблона. Просто потому, что определена внутри шаблонного класса. Чтобы излишне не усложнять компилятор (и без того сложный) тебя просят в dependent scope явно указывать - где идёт отсылка к типам, а где - нет.

Комментирование для вас недоступно.
Для того, чтобы получить возможность комментировать, авторизуйтесь:
 
РегистрацияЗабыли пароль?

ru_programming

главная