Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 31.05.2016
Сообщений: 13
1

Разобраться с вложенными классами-шаблонами

04.02.2018, 23:17. Просмотров 330. Ответов 1
Метки нет (Все метки)

Есть код (Стивен Дьюхерст, С++ священные знания):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template <class T>
class AnAlloc {
   public:
      //...
      template <class Other>
      class rebind {
         public:
            typedef AnAlloc<Other> other;
      };
      //...
};
 
template < typename T, class A = std::allocator<T> >
class SList {
   //...
   struct Node {
      //...
   };
  typedef A::rebind<Node>::other NodeAlloc; // синтаксическая ошибка!
 //...
};
Далее автор пишет так:
Компилятор вынужден делать предположение о том, что
вложенное имя rebind является именем нешаблона, и угловая скобка,
следующая за ним, интерпретируется как знак «меньше чем».
Но проблемы только начинаются. Даже если бы компилятор, дойдя до двукратно вложенного имени other, каким-то образом мог установить, что rebind – это имя шаблона, он был бы вынужден признать, что это не имя типа!
И дает правильный вариант typedef:
C++
1
typedef typename A::template rebind<Node>::other NodeAlloc;
Почему компилятор в первом (неверном) случае делает предположение, что rebind - имя нешаблона? Разве возможны здесь другие варианты?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2018, 23:17
Ответы с готовыми решениями:

Проблемма с вложенными классами
Собственно, код программы. Компилятору не нравятся строки №41 и 47. Можете подсказать, в чем может...

Программирование с вложенными классами
Хелп, мой вариант 9.

Помогите разобраться с шаблонами
Пытаюсь реализовать новую для себя методику &quot;службы класса&quot;. Все хорошо работало, пока не возникла...

Попытка разобраться с классами в C++
Доброго времени суток Читаю книгу Дейтел С++ дошел до классов и в первом же упражнении впал в...

1
Грамотный. Безпорно.
16787 / 9683 / 1869
Регистрация: 27.09.2012
Сообщений: 24,034
Записей в блоге: 2
05.02.2018, 14:02 2
A::rebind меньше Node больше ::other
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2018, 14:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Помогите разобраться с классами в C++
Есть задание по ООП С++ Используя классы создать кольцо.Записи кольца включают в себя указатели на...

Помогогите разобраться с классами
Прошу доступно объяснить: частные и общие данные, конструктор, деструктор, перегрузка операторов,...

Не могу разобраться с классами
InitD3DWindow.h ------------------- class InitD3DWindow { protected: //Initialize the...

Не получается разобраться с абстрактными классами
Всем привет, у меня пара вопросов, не получается почему скомпилить файл. Ругается, видимо что то не...

Не могу разобраться с функциями и классами
Уважаемые гуру! Подскажите, пожалуйста, мне такой вопрос. Пишу небольшое консольное...

Не могу разобраться с классами и освобождением памяти
Есть задача. Создать класс матрица Данный класс содержит указатель на float, размер строк и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.