@ProCxx

Страница 638 из 2477
Сергей
06.03.2017
10:37:44
Были разговоры, чтобы можно было указывать имена концептов, но решили не усложнять)

Monday Begins on Saturday
06.03.2017
10:39:43
Непрозрачно выглядит. И что будет если у меня будет такое?: struct Foo {int x; int do(){return 10;}; float y;} auto [x, y] = ReturnFoo()

Сергей
06.03.2017
10:40:42
Непрозрачно выглядит. И что будет если у меня будет такое?: struct Foo {int x; int do(){return 10;}; float y;} auto [x, y] = ReturnFoo()
здесь надо думать в терминах struct aggregate initialization, structural binding - обратная операция

в с++17 пока одная из самых полезных фич, которая сразу вошла в код - Fold Expressions

Google
Сергей
06.03.2017
10:42:10
реально много кода сократилось, основанного на variadic templates

Monday Begins on Saturday
06.03.2017
10:48:32
Крутяк. Теперь можно как в Python: for (auto && [key, value] : my_map)

Сергей
06.03.2017
10:49:49
Жулик
06.03.2017
10:49:54
Monday Begins on Saturday
06.03.2017
10:50:25
А с 1 & будет работать?
Я вот ещё сам не тестировал ничего, только любуюсь

Я думаю будет

Илья
06.03.2017
10:50:56
Крутяк. Теперь можно как в Python: for (auto && [key, value] : my_map)
воу воу воу палехче... неужели правда так теперь можно? я в шоке))

Илья
06.03.2017
10:51:11
это с какого стандарта

Monday Begins on Saturday
06.03.2017
10:51:27
Илья
06.03.2017
10:51:49
C++17
а какие компиляторы его уже поддерживают?

Stanislav
06.03.2017
10:51:58
Илья
06.03.2017
10:52:32
понятненько круто)) это будет работать только для std::map?

Google
Илья
06.03.2017
10:52:47
или там какой-то унифицированный интерфейс для словарей есть

чтобы свои также работали

Monday Begins on Saturday
06.03.2017
10:53:34
понятненько круто)) это будет работать только для std::map?
https://github.com/tvaneerd/cpp17_in_TTs/blob/master/structured_bindings.md Я думаю основываясь на этих примерах можно что-то придумать поинтереснее

Artem
06.03.2017
10:53:43
кланг 5?

Monday Begins on Saturday
06.03.2017
10:55:06
допустим: struct Foo { int i; int j; }; std::map<std::string, Foo> my_map; // ... for (auto && [key, [i, j]] : my_map) будет работать?

Илья
06.03.2017
10:55:09
а что значит вот это? use(s, ++i); вызов какой то функции чтоли?

Stanislav
06.03.2017
10:55:39
кланг 5?
ага, 4 скоро выйдет, но он будет полностью С++17 поддерживать, а кланг 5 уже да

Artem
06.03.2017
10:56:23


Monday Begins on Saturday
06.03.2017
10:57:22
нет
Т.е. раскрыть ещё раз внутри [] нельзя?

Сергей
06.03.2017
10:57:37
Т.е. раскрыть ещё раз внутри [] нельзя?
нет, вложенность не поддерживается

Sergey
06.03.2017
10:57:39
Aidar
06.03.2017
10:57:49
Там же эта херня раскрывается

В std::get

Monday Begins on Saturday
06.03.2017
10:58:17
нет, вложенность не поддерживается
Недоделанная фича какая-то тогда

Sergey
06.03.2017
10:58:26


Сергей
06.03.2017
10:58:40


Недоделанная фича какая-то тогда
там много ограничений. Именно про это ограничение говорил полухин на одной из конференций, типа синтаксис может конфликтовать с атрибутами

Google
Monday Begins on Saturday
06.03.2017
11:00:33
Monday Begins on Saturday
06.03.2017
11:07:13


тоже мощно

Aidar
06.03.2017
11:15:19
Думать больше придется вроде

Ну привыкать по крайней мере

Сергей
06.03.2017
11:17:25
folding expresion на раз зашли после ужаса, что приходилось делать раньше для реализации похожих вещей (сначала рекурсии, потом index_sequence и т.п.)

мне жалко новичков. Если будут учиться по книгам, им придётся пройти через весь ад, чтобы дойти до современного и достаточно элегантного решения, так как все эти новые вещи нигде не описаны и непонятно, когда выйдет стоящая литература

Сергей
06.03.2017
11:20:52
Да, нет, им как раз не нужно будет думать про рекурсию в шаблонах и index_sequence, чтобы сделать какие-то тривиальные операции.
чтобы тривиальные - нет, но если использовать variadic templates, то приходится, к сожалению

BaLoo
06.03.2017
11:22:45
чтобы тривиальные - нет, но если использовать variadic templates, то приходится, к сожалению
Само собой, я это говорил к вопросу о современных и элегантных решениях. folding не кажется чем-то новым, что раньше нельзя было сделать. Это одна из редких фич языка, которая реально делает его проще в те моменты, где раньше надо было ежа против шерсти родить.

Сергей
06.03.2017
11:24:50
Само собой, я это говорил к вопросу о современных и элегантных решениях. folding не кажется чем-то новым, что раньше нельзя было сделать. Это одна из редких фич языка, которая реально делает его проще в те моменты, где раньше надо было ежа против шерсти родить.
так я и говорю про то же самое) просто новичкам, которые учатся по книжкам, придётся писать сначала те же рекурсии, index_sequences, уже сильно позже они узнают более эффективные и приятные способы

Сергей
06.03.2017
11:25:12
Я про то, что литература устаревает крайне стремительно

Aidar
06.03.2017
11:25:15
Надо книжки ждать

BaLoo
06.03.2017
11:26:14
Надо книжки ждать
Главное этим не злоупотреблять.

Совмещать с решением реальных задач.

Monday Begins on Saturday
06.03.2017
11:26:44
А ад им всеравно придется терпеть же. Куча старого кода никуда не подевалась

Сергей
06.03.2017
11:28:01
Помню в школе написал свой аналог вектора, нужно было для какой-то игрушки. А потом мне люди показали стандартную библиотеку?
Вот сделают stl 2.0 с концептами, ranges и прочими радостями, и будут вообще все книжки невалидны)

Pepe
06.03.2017
11:29:01
А ад им всеравно придется терпеть же. Куча старого кода никуда не подевалась
Да в этом вся суть C++. Сейчас из него делают фреймворк

Google
Плюшка
06.03.2017
11:29:43
С++ != STL

Aidar
06.03.2017
11:29:58
STL != std

Плюшка
06.03.2017
11:30:09
++

F.L
06.03.2017
11:30:18
Как так???

Сергей
06.03.2017
11:30:28
Ну ладно, почти все ?

Grigor
06.03.2017
11:30:33
тип != Qt

F.L
06.03.2017
11:30:43
.

Pepe
06.03.2017
11:30:49
С++ != STL
Да но что такое последние фичи с++, вроде fold expressions, lambdas чем отличаются от библиотек

Плюшка
06.03.2017
11:32:09
только -nostdinc только хардкор

Admin
ERROR: S client not available

Aidar
06.03.2017
11:32:13
Че завязано на std: - new/delete -теперь еще [] с get

Анальная привязка

Сергей
06.03.2017
11:32:34
Многие core фичи языка внедряются под влиянием недовольства stl, так что ..

Aidar
06.03.2017
11:33:41
А еще init list

С {}

Плюшка
06.03.2017
11:38:30
Сергей
06.03.2017
11:39:24
кто нибудь использовал https://github.com/boost-experimental/sml ?

Vyacheslav
06.03.2017
11:41:47
Всем привет! Реализовал класс 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
06.03.2017
11:44:01
а что за слово use ?

Google
Sergey
06.03.2017
11:44:19
это имя функции, или новое ключевое слово?

Monday Begins on Saturday
06.03.2017
11:44:50
это имя функции, или новое ключевое слово?
какая-то функция просто для примера

Vyacheslav
06.03.2017
11:46:10
Так нельзя
но работает почему-то )

Сергей
06.03.2017
11:47:08
Так нельзя
почему нельзя, можно. for_each и создавался когда то для callable with state в том числе

но работает почему-то )
здесь обитающие посоветуют использовать accumulate c std::sum :)

Tema
06.03.2017
11:48:25
error: ‘for_each’ was not declared in this scope

Сергей
06.03.2017
11:48:55
error: ‘for_each’ was not declared in this scope
#include <algorithm> using std::for_each;

Tema
06.03.2017
11:49:01
а вот он где

нувсёлегально пахоже

Monday Begins on Saturday
06.03.2017
11:51:01
> using std::for_each; Это вообще легально?

Сергей
06.03.2017
11:51:50
Evgeniy
06.03.2017
11:51:57
Только так using и стоит использовать

Vyacheslav
06.03.2017
11:54:07
здесь обитающие посоветуют использовать accumulate c std::sum :)
про accumulate знаю ) но хотелось разобраться с использованием класса в алгоритме for_each

Сергей
06.03.2017
11:55:59
Напиши, в чем именно сложность)

Vyacheslav
06.03.2017
11:57:57
вопрос в том, что обычно класс сначала описывается (объявляется), а затем определяется - создается объект я так понимаю, можно использовать Sum(), потому что перегружен оператор определения ()?

Плюшка
06.03.2017
11:59:13
Sum() - это вызов конструктора же

Vyacheslav
06.03.2017
12:01:54
не, я имею ввиду, что обычное использование класса выглядит так: Sum ssum; // определяем объект for_each(..., ssum); // норм работает а здесь также работает без определения объекта for_each(..., Sum()); почему?

Cyber
06.03.2017
12:03:01
Sum ssum; // определяем объект тоже самое что и Sum ssum(); // определяем объект

Плюшка
06.03.2017
12:03:22
чтобы понятнее было

Страница 638 из 2477