Re: Можно ли и как канонично получить из итератора тип элеме
От: rg45 СССР  
Дата: 18.04.25 08:36
Оценка: +1
Здравствуйте, Marty, Вы писали:

M>Можно ли и как канонично получить из итератора тип элемента последовательности?

M>Я хочу из любого типа итераторов одинаковым способом получить const char*.

Это две совершенно разные задачи. Вторая решаема (я показал
Автор: rg45
Дата: 18.04.25
вариант решения).

Первая же задача нерешаема в принципе. Давай рассмотрим такой псевдокод:

// Имеем несколько классов контейнеров.
// Каждый класс содержит внутри определения своих итераторов.
// И разумеется уникальность типов итераторов никто не гарантирует.

struct Containter1 { using iterator = int*; };
struct Containter2 { using iterator = int*; };
struct Containter3 { using iterator = int*; };

// Допустим, что по типу итератора можно вывести тип контейнера.
template <typename ContainerType>
void foo(ContainerType::iterator);

int main()
{
   // Попоробуем заюзать это дело.
   Container1::iterator it1;
   Container2::iterator it2;
   Container3::iterator it3;

   // Вот в этом месте самое время обратить внимание на то,
   // что объекты it1, it2, it3 имеют один и тот же тип - int*.

   // И каким образом компилятор должен понять, что в следующих
   // случаях должны быть выведены различные типы контейнеров и какие именно?
   foo(it1);
   foo(it2);
   foo(it3);
}
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 18.04.2025 8:49 rg45 . Предыдущая версия . Еще …
Отредактировано 18.04.2025 8:38 rg45 . Предыдущая версия .
Отредактировано 18.04.2025 8:36 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.