Сообщение Re[5]: std::back_insert_iterator::value_type от 23.07.2023 21:25
Изменено 23.07.2023 21:25 Sm0ke
Re[5]: std::back_insert_iterator::value_type
Здравствуйте, пффф, Вы писали:
П>Можно, но у меня нет лямбды, есть функция, которая получает два итератора на байты, и OutputIterator. Этот OutputIterator я создаю для std::string, но ничто не должно мне помешать сделать тоже самое для вектора из uint8_t. Поэтому я хотел скастить к OutputIterator::value_type, но у back_insert_iterator это всегда void. Сейчас ковыряюсь через iterator_traits, но там тоже какое-то г полезло
П>UPD Переделал пример, как это у меня с шаблоном, и как я пытаюсь с кастом к value_type — https://gcc.godbolt.org/z/5n89nv6jY
Получить value_type можно через container_type итератора.
Вот так должно работать.
https://gcc.godbolt.org/z/Knfa41Tbc
П>Можно, но у меня нет лямбды, есть функция, которая получает два итератора на байты, и OutputIterator. Этот OutputIterator я создаю для std::string, но ничто не должно мне помешать сделать тоже самое для вектора из uint8_t. Поэтому я хотел скастить к OutputIterator::value_type, но у back_insert_iterator это всегда void. Сейчас ковыряюсь через iterator_traits, но там тоже какое-то г полезло
П>UPD Переделал пример, как это у меня с шаблоном, и как я пытаюсь с кастом к value_type — https://gcc.godbolt.org/z/5n89nv6jY
Получить value_type можно через container_type итератора.
using IterType = OutputIterator;
using IterCharType = typename IterType :: container_type :: value_type;
for(size_t i = 0; i < num; ++i, ++iter)
{
*iter = static_cast<IterCharType>( func() );
}Вот так должно работать.
https://gcc.godbolt.org/z/Knfa41Tbc
Re[5]: std::back_insert_iterator::value_type
Здравствуйте, пффф, Вы писали:
П>Можно, но у меня нет лямбды, есть функция, которая получает два итератора на байты, и OutputIterator. Этот OutputIterator я создаю для std::string, но ничто не должно мне помешать сделать тоже самое для вектора из uint8_t. Поэтому я хотел скастить к OutputIterator::value_type, но у back_insert_iterator это всегда void. Сейчас ковыряюсь через iterator_traits, но там тоже какое-то г полезло
П>UPD Переделал пример, как это у меня с шаблоном, и как я пытаюсь с кастом к value_type — https://gcc.godbolt.org/z/5n89nv6jY
Получить value_type можно через container_type итератора.
Вот так должно работать. https://gcc.godbolt.org/z/Knfa41Tbc
П>Можно, но у меня нет лямбды, есть функция, которая получает два итератора на байты, и OutputIterator. Этот OutputIterator я создаю для std::string, но ничто не должно мне помешать сделать тоже самое для вектора из uint8_t. Поэтому я хотел скастить к OutputIterator::value_type, но у back_insert_iterator это всегда void. Сейчас ковыряюсь через iterator_traits, но там тоже какое-то г полезло
П>UPD Переделал пример, как это у меня с шаблоном, и как я пытаюсь с кастом к value_type — https://gcc.godbolt.org/z/5n89nv6jY
Получить value_type можно через container_type итератора.
using IterType = OutputIterator;
using IterCharType = typename IterType :: container_type :: value_type;
for(size_t i = 0; i < num; ++i, ++iter)
{
*iter = static_cast<IterCharType>( func() );
}Вот так должно работать. https://gcc.godbolt.org/z/Knfa41Tbc