| Цитата(zim22 @ 13.6.2009, 14:15) | andrew_121, хотите много умных слов, вы их получите  *** Иногда компилятору необходимо помогать в устранении неоднозначности синтаксического анализа. SCollection имеет вложенное имя типа ElemT. Однако фунция fill не сработает, т.к. вложенное имя Cont::ElemT не распознаётся как имя типа!
| Код | template <typename Etype> class SCollection { public: typedef Etype ElemT; void insert(const Etype &) { } };
|
в нижепреведенной функции необходимо typename добавить
| Код | typename Cont::ElemT a[]
|
| Код | template <class Cont> void fill(Cont &c, Cont::ElemT a[], int len) { // ошибка! for (int i = 0; i < len; ++i) c.insert(a[i]); }
|
|
Вот теперь понял. Спасибо!
Добавлено через 1 минуту и 22 секунды
Цитата(mes @ 13.6.2009, 14:24 ) | | Если знаете где искать, зачем форумчан то спрашивали ?! |
Я сначала спросил. Потом подумал глянуть что об этом говорит стандарт. Без какого либо подвоха |