Constantine
так зипни с подобием iota
ну давай, напиши через std до 23
Constantine
я себе просто написал index_iterator и iterator_pair :)
Александр
Constantine
это for (auto [index, &element] : enumerate(container))
Александр
она аргументом передаётся, ваш кэп
Alexander "SonnySlave"
Антон попросил тестовый пропозал. Ну вот я инаписал тестово
Alexander "SonnySlave"
кто ж знал, что не удали
Alexander "SonnySlave"
смотри в Boost.Algorithm
Constantine
Да, в С++17 можно захватить контейнер на auto&& и потом сделать iterator_pair
Alexander "SonnySlave"
это вопросы к Антону - я не член РГ21 😊
Constantine
Разумеется, просто пишешь 200 строк кода в utils и все работает
Constantine
Попутно огребаешь баг оптимизатора MSVC при /EHsc
Constantine
Который уверен что инициализатор struct { size_t } может исключение плюнуть
Ignat
std2?
Alexander "SonnySlave"
ага
Constantine
ага
Alexander "SonnySlave"
вот оттуда и разговоры про std2
Constantine
и чтобы std::vector::operator[] нормальный был!
Ignat
Ну вообще, С++ давно должно не быть
Ignat
и чтобы std::vector::operator[] нормальный был!
а чем текущий ненормален?
Alexander "SonnySlave"
Ну вообще, С++ давно должно не быть
сейчас всё на раст перепишем)
Constantine
а чем текущий ненормален?
худшая в мире перегрузка reference operator [](size_t ndx)
Ignat
ну это претензия к самой специализации скорее
Ignat
нежели к оператору
Constantine
?
Constantine
там дожно быть 4 перегрузки
Constantine
вместо 2
Constantine
как и у любой функции-члена класса, возвращающей референс на хранимый элемент
Ignat
я не так распарсил reference прост
Ignat
чёт неочевидно, когда может быть недостаточно двух
Александр
похоже речь о const & и && перегрузках
Constantine
речь о том, что T& operator [] (size_t ndx) &
Constantine
иначе вы убиваете ногу пользователю
Constantine
вызовом на &&
Igor
вызовом на &&
в том смысле что vector&&[] вернёт T& на уже убитый элемент?
Constantine
и будет неправильно захватываться на любом auto&& выражении
Александр
не на убитый, а на при смерти
Constantine
auto&& f = std::vector{1, 2, 3, 4, 5}[1]; //прощай, нога
Constantine
в С++11 вообще есть простое правило от расстрела ног: ставь & на все возвраты &
Constantine
перегрузка здорового человека, std::optional
Nikita
а почему такое не добавили в с++11? поидее же несовместимости не должно быть...
Egor
а потом сделают <&> для перегрузок
Constantine
угу, даешь template <&S> T&S operator * &S;
Constantine
мои глаза
да это рофль
Constantine
мои глаза
примерно как operator *|* для перемещения с разобъявлением переменной
Constantine
Да, это я писал
Constantine
Там больше для записи once_callable_function как mutable && лябмд
Constantine
Да, смотри, я могу написать
Constantine
struct MYLAMBDA { Result operator () (Args...) && {} };
Alexander "SonnySlave"
Да, это я писал
не пройдёт скорее всего
Constantine
Я в 99% лямбду заворачиваю в контейнер
Alexander "SonnySlave"
так как и так синтаксис лямбд перегружен сильно и людям ну очень не нравится расширять его сильнее
Alexander "SonnySlave"
хотя вот шаблоны добавили
Constantine
не пройдёт скорее всего
ну по-моему гениально, что лямбда синтаксически не умеет то, что умеет функция
Constantine
ровно в одном пункте
Alexander "SonnySlave"
ну лямбды у нас действительно получились очень страшные
Constantine
т.е. в итоге добавили явные шаблоны
Constantine
но не добавили REF QUALIFIER
Alexander "SonnySlave"
вот явные шаблоны - это трешак, конечно
Alexander "SonnySlave"
скажи спасибо автору Boost.Hana
Constantine
а все потому, что std просто не уважает MoveConstructible
Constantine
им, честно говоря, плевать
Constantine
что std::thread можно запускать ПЕРЕМЕЩЕНИЕМ
Constantine
и что std::thread гарантирует однократный вызов коллбека
Igor
хотя вот шаблоны добавили
template<typename T>[](T x){} ?
Constantine
[]<T😠T x) {}
Constantine
А у меня гуй и тонны биндов
Constantine
Плюс функциональная запись
Constantine
Именно
Igor
[]<T😠T x) {}
le omg а зачем?
Constantine
Лямбда используется чтобы не писать миллион кложер классов
Constantine
потому что button.reset_is_enabled(/*???*/);
Constantine
я именно 😠 хотел сказать
Constantine
в этом месте
Igor
:D
Igor
*та копипаста про #define some_emoji some_keyword.жпг*