Ошибка с использованием контейнера и шаблона [дубликат]

90
26 марта 2021, 21:40
На этот вопрос уже даны ответы здесь:
Зачем надо писать typename для уточнения типа? (1 ответ)
Класс шаблонного класса не воспринимается как тип при описании метода (1 ответ)
Использование параметра шаблона в качестве параметра шаблона другого класса (1 ответ)
C++ ошибка dependent name is not a type, prefix with 'typename' to indicate a type (1 ответ)
Закрыт 1 год назад.

столкнулся с ошибками в следующем коде

template<class ICustomStatistics>
class СStatistics_Periodic : public IBaseStatistics
{
protected:
    using statistics_block_pr = std::pair<double, ICustomStatistics>;
    using statistics_blocks_t = std::vector<statistics_block_pr>;
    using statistics_links_t  = std::vector<statistics_blocks_t::iterator>; // ОШИБКА

Error C2923 'std::vector': 'std::vector,std::allocator<_Ty>>::iterator' is not a valid template type argument for parameter '_Ty'

и

Error C3203 'allocator': unspecialized class template can't be used as a template argument for template parameter '_Alloc', expected a real type

все на строчку

using statistics_links_t  = std::vector<statistics_blocks_t::iterator>; 

Не могу понять - а что не нравится то?

Вектор объектов и вектор итераторов

Answer 1

При использовании зависимых (от параметра шаблона) имен необходимо использовать ключевое слово typename. Иначе, за неимением возможности определить, чем является iterator, компилятор по-умолчанию будет впоспринимать его как имя переменной.

using statistics_links_t  = std::vector<typename statistics_blocks_t::iterator>;
READ ALSO
RVO при выводе типа decltype(auto)

RVO при выводе типа decltype(auto)

Формулировка RVO, по книге Скотта Мейерса "Эффективный и современный C++", гласит, что такое разрешение даётся, если 1) тип локального объекта...

144
Как ограничить длину списка у .selectmenu JQuery UI

Как ограничить длину списка у .selectmenu JQuery UI

Есть выпадающее меню сделанное благодаря стилизации тега select с классом meal черезselectmenu, в списке очень много элементов и при открытии они все...

133
Дистанционная активация selectmenu JQuery UI

Дистанционная активация selectmenu JQuery UI

Есть элемент стилизованный благодаря selectmenu, также есть кнопка в другой месте страницы (но в пределах видимости экрана относительно selectmenu,...

138