Сообщение Re: Можно ли и как канонично получить из итератора тип элеме от 18.04.2025 8:36
Изменено 18.04.2025 8:49 rg45
Re: Можно ли и как канонично получить из итератора тип элеме
Здравствуйте, Marty, Вы писали:
M>Можно ли и как канонично получить из итератора тип элемента последовательности?
M>Я хочу из любого типа итераторов одинаковым способом получить const char*.
Это две совершенно разные задачи. Вторая решаема (я показал
Первая же задача нерешаема в принципе. Давай рассмотрим такой псевдокод:
M>Можно ли и как канонично получить из итератора тип элемента последовательности?
M>Я хочу из любого типа итераторов одинаковым способом получить const char*.
Это две совершенно разные задачи. Вторая решаема (я показал
Автор: rg45
Дата: 18.04.25
вариант решения).Дата: 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);
}Re: Можно ли и как канонично получить из итератора тип элеме
Здравствуйте, Marty, Вы писали:
M>Можно ли и как канонично получить из итератора тип элемента последовательности?
M>Я хочу из любого типа итераторов одинаковым способом получить const char*.
Это две совершенно разные задачи. Вторая решаема (я показал
Первая же задача нерешаема в принципе. Давай рассмотрим такой псевдокод:
M>Можно ли и как канонично получить из итератора тип элемента последовательности?
M>Я хочу из любого типа итераторов одинаковым способом получить const char*.
Это две совершенно разные задачи. Вторая решаема (я показал
Автор: rg45
Дата: 18.04.25
вариант решения).Дата: 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);
}