Dmitriy / დიმიტრი
Я думаю будет
Anonymous
Крутяк. Теперь можно как в Python: for (auto && [key, value] : my_map)
воу воу воу палехче... неужели правда так теперь можно? я в шоке))
Anonymous
это с какого стандарта
Dmitriy / დიმიტრი
Anonymous
C++17
а какие компиляторы его уже поддерживают?
Anonymous
понятненько круто)) это будет работать только для std::map?
Anonymous
или там какой-то унифицированный интерфейс для словарей есть
Anonymous
чтобы свои также работали
Dmitriy / დიმიტრი
понятненько круто)) это будет работать только для std::map?
https://github.com/tvaneerd/cpp17_in_TTs/blob/master/structured_bindings.md Я думаю основываясь на этих примерах можно что-то придумать поинтереснее
Artem
кланг 5?
Dmitriy / დიმიტრი
допустим: struct Foo { int i; int j; }; std::map<std::string, Foo> my_map; // ... for (auto && [key, [i, j]] : my_map) будет работать?
Anonymous
а что значит вот это? use(s, ++i); вызов какой то функции чтоли?
Stanislav
кланг 5?
ага, 4 скоро выйдет, но он будет полностью С++17 поддерживать, а кланг 5 уже да
Artem
Dmitriy / დიმიტრი
нет
Т.е. раскрыть ещё раз внутри [] нельзя?
Sergey
Т.е. раскрыть ещё раз внутри [] нельзя?
нет, вложенность не поддерживается
серёжа
Aidar
Там же эта херня раскрывается
Aidar
В std::get
Dmitriy / დიმიტრი
нет, вложенность не поддерживается
Недоделанная фича какая-то тогда
серёжа
Слишком сложно, до свидания
Sergey
сейчас попробовал заюзать в цикле, уже норм собралось)) вчера не хотело))
Sergey
Недоделанная фича какая-то тогда
там много ограничений. Именно про это ограничение говорил полухин на одной из конференций, типа синтаксис может конфликтовать с атрибутами
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
Dmitriy / დიმიტრი
тоже мощно
Aidar
Думать больше придется вроде
Aidar
Ну привыкать по крайней мере
Sergey
folding expresion на раз зашли после ужаса, что приходилось делать раньше для реализации похожих вещей (сначала рекурсии, потом index_sequence и т.п.)
Sergey
мне жалко новичков. Если будут учиться по книгам, им придётся пройти через весь ад, чтобы дойти до современного и достаточно элегантного решения, так как все эти новые вещи нигде не описаны и непонятно, когда выйдет стоящая литература
Sergey
Да, нет, им как раз не нужно будет думать про рекурсию в шаблонах и index_sequence, чтобы сделать какие-то тривиальные операции.
чтобы тривиальные - нет, но если использовать variadic templates, то приходится, к сожалению
Nikolay
чтобы тривиальные - нет, но если использовать variadic templates, то приходится, к сожалению
Само собой, я это говорил к вопросу о современных и элегантных решениях. folding не кажется чем-то новым, что раньше нельзя было сделать. Это одна из редких фич языка, которая реально делает его проще в те моменты, где раньше надо было ежа против шерсти родить.
Sergey
Само собой, я это говорил к вопросу о современных и элегантных решениях. folding не кажется чем-то новым, что раньше нельзя было сделать. Это одна из редких фич языка, которая реально делает его проще в те моменты, где раньше надо было ежа против шерсти родить.
так я и говорю про то же самое) просто новичкам, которые учатся по книжкам, придётся писать сначала те же рекурсии, index_sequences, уже сильно позже они узнают более эффективные и приятные способы
Sergey
Я про то, что литература устаревает крайне стремительно
Aidar
Надо книжки ждать
Nikolay
Надо книжки ждать
Главное этим не злоупотреблять.
Nikolay
Совмещать с решением реальных задач.
Dmitriy / დიმიტრი
А ад им всеравно придется терпеть же. Куча старого кода никуда не подевалась
Sergey
Помню в школе написал свой аналог вектора, нужно было для какой-то игрушки. А потом мне люди показали стандартную библиотеку😂
Вот сделают stl 2.0 с концептами, ranges и прочими радостями, и будут вообще все книжки невалидны)
Pepe 🐸
А ад им всеравно придется терпеть же. Куча старого кода никуда не подевалась
Да в этом вся суть C++. Сейчас из него делают фреймворк
Aidar
STL != std
Купи
Как так😱😱😱
Sergey
Ну ладно, почти все 😄
Danil
тип != Qt
Купи
Купи
.
Pepe 🐸
Да но что такое последние фичи с++, вроде fold expressions, lambdas чем отличаются от библиотек
Aidar
Че завязано на std: - new/delete -теперь еще [] с get
Aidar
Анальная привязка
Sergey
Многие core фичи языка внедряются под влиянием недовольства stl, так что ..
Aidar
А еще init list
Aidar
С {}
Sergey
кто нибудь использовал https://github.com/boost-experimental/sml ?
Vyacheslav
Всем привет! Реализовал класс Sum для суммирования элементов вектора с помощью алгоритма for_each class Sum { public: Sum() : sum(0) { }; void operator() (int n) { sum += n; } inline int get_sum() { return sum; } private: int sum; }; vector<int> nums{3, 4, 2, 9, 15, 267}; Sum s = for_each(nums.begin(), nums.end(), Sum()); cout « "сумма с помощью класса Sum: " « s.get_sum() « endl; Насколько я понимаю, Sum() - это незавершенный тип (incomplete type). Можете подсказать, как это работает, и вообще как лучше в данном случае - объявить объект Sum ssum или использовать класс Sum()
Sergey
а что за слово use ?
Sergey
это имя функции, или новое ключевое слово?
Dmitriy / დიმიტრი
это имя функции, или новое ключевое слово?
какая-то функция просто для примера
Vyacheslav
Так нельзя
но работает почему-то )
Sergey
Так нельзя
почему нельзя, можно. for_each и создавался когда то для callable with state в том числе
Sergey
но работает почему-то )
здесь обитающие посоветуют использовать accumulate c std::sum :)
Deleted Account
error: ‘for_each’ was not declared in this scope
Sergey
error: ‘for_each’ was not declared in this scope
#include <algorithm> using std::for_each;
Deleted Account
а вот он где
Deleted Account
нувсёлегально пахоже
Dmitriy / დიმიტრი
> using std::for_each; Это вообще легально?
Evgenii
Только так using и стоит использовать
Vyacheslav
здесь обитающие посоветуют использовать accumulate c std::sum :)
про accumulate знаю ) но хотелось разобраться с использованием класса в алгоритме for_each
Sergey
Напиши, в чем именно сложность)