
Сергей
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
в с++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
Я думаю будет

Илья
06.03.2017
10:50:56

Igor
06.03.2017
10:51:04

Илья
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

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

Сергей
06.03.2017
10:56:39

Fox
06.03.2017
10:57:13

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

Aidar
06.03.2017
10:57:34

Сергей
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

Сергей
06.03.2017
11:00:54

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 и т.п.)
мне жалко новичков. Если будут учиться по книгам, им придётся пройти через весь ад, чтобы дойти до современного и достаточно элегантного решения, так как все эти новые вещи нигде не описаны и непонятно, когда выйдет стоящая литература

BaLoo
06.03.2017
11:20:15

Сергей
06.03.2017
11:20:52

BaLoo
06.03.2017
11:22:45

Сергей
06.03.2017
11:24:50

Сергей
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

Pepe
06.03.2017
11:29:01

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

Сергей
06.03.2017
11:45:24
Всем привет!
Реализовал класс 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()
завершенный


Aidar
06.03.2017
11:45:42
Всем привет!
Реализовал класс 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()
Так нельзя

Vyacheslav
06.03.2017
11:46:10

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

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

Сергей
06.03.2017
11:48:55

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

Сергей
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
чтобы понятнее было