Псевдоним шаблона в самом шаблоне класса

89
30 января 2022, 11:20

Рассмотрим класс итератора для массивов stdext::checked_array_iterator, который определен в заголовочном файле <iterator>. Экземпляр класса можно использовать следующим образом:

char m[] = "2020 Happy New Year!";
constexpr size_t start = 5;
stdext::checked_array_iterator<const char*> It(m, strlen(m), start);
size_t count{}; //только для объяснений
while (true) {
    cout << *It++;
    ++count;
}

не беспокоясь о выходе за пределы массива (программа просто прекратится как только выполнится count + start > strlen(m), а сообщение об ошибке получим в режиме отладки). Соответственно, класс имеет все необходимые стандартные определения для итератора. Там еще определен псевдоним типа:

template <class _Ptr>
class checked_array_iterator { // wrap a pointer with checking
    //...    
public:
     using _Prevent_inheriting_unwrap = checked_array_iterator;
     //...
}

Судя по названию, если пользоваться этим именем, то наследовать не получится(или я ошибаюсь?). Т.е попытка

using safe_ptr = typename 
stdext::checked_array_iterator<const char*>::_Prevent_inheriting_unwrap;
class D : public  safe_ptr   {//...};

будет неудачной. Но это не так.

Вопрос: для чего тогда определен псевдоним _Prevent_inheriting_unwrap?...

READ ALSO
Конструктор копирования для QList&lt;T&gt;

Конструктор копирования для QList<T>

У меня есть объект который иногда мне нужно будет скопировать в другойесли быть точнее, то у меня в классе client_t есть 3 одинаковых объекта,...

74
Чем плоха публичность переменных в ООП?

Чем плоха публичность переменных в ООП?

Я работаю на C#, но полагаю, это касается любого языка использующий объектно - ориентированную парадигму

161
Событие на нарисованный объект c#

Событие на нарисованный объект c#

Есть класс Circle, который рисует окружности заданного размераЯ попытался сделать событие на клик мыши, которое показывало бы информацию по данному...

87
Функция в Unity наподобие SetInterval из JavaScript

Функция в Unity наподобие SetInterval из JavaScript

Нужно вызывать функцию каждый определённый n-ый промежуток времени

172