[00:35:56] <valexey> что бы еще такого хорошего про плюсы сказать..
[00:36:44] <valexey> ну, например вот такая вот валидная программа:
и даже так:
#include <iostream>
struct Foo {
int bar;
Foo(int b) : bar(b) {}
Foo():bar(0) {}
};
int main()
{
Foo(a);
a.bar = 42;
std::cout << a.bar << std::endl;
}
[00:36:58] <valexey> Тяжкое наследие прошлого :-)
[01:48:31] <vlad2> Этот коварный for each модный. Сегодня обломался.
[01:48:58] <vlad2> for(auto element: f(X()){}
[01:49:26] <vlad2> ~X() вызывается до завершения цикла.
[01:49:49] <valexey> ну, логично же. функция отработала, временный объект помер
[01:50:15] <vlad2> Что весьма чревато и приводит к тому, что std::for_each может быть автоматически заменен модным.
[01:50:51] <vlad2> Нифига не логично, потому что std::for_each в данной ситауции отрабатывает до вызова ~X().
[01:51:14] <vlad2> *_не_ может быть заменен
[01:51:40] <valexey> что тоже логично - foo(X(), Y(), Z())
[01:51:44] <vlad2> Т.е. я тупо получил крэш заменив for_each на for.
[01:51:53] <valexey> очевидно, что X, Y, Z сдохнут после того как foo отработает
[01:52:00] <valexey> а не до того
[01:52:37] <valexey> for_each это ж обычная функция
[01:54:44] <valexey> а for то таки статемент :-)
[01:55:24] <valexey> в общем, я из этого всего делаю один вывод - побочные эффекты -- зло
[01:55:26] <valexey> :-)
[01:56:15] <valexey> блин, как непривычно на модерновых плюсах писать..
[01:56:21] <valexey> мы тут на c++14 скоро переходим
[01:57:17] <valexey> да еще и с гугловым кодингстайлом
[01:57:27] <valexey> который специфичные весьма местами
[02:55:39] <vlad2> C++14 няшка :) Правдв variadic template надо копипастить - такое самому не выписать :)
[02:55:51] <valexey> :-)
[02:55:58] <valexey> 17 еще няшней
[02:56:05] <valexey> правда там автоптр выпилили
[02:56:12] <valexey> т.е. не задепрекейтили, а прям таки УДАЛИЛИ
[02:56:47] <valexey> да, и там таки можно будет писать [a, b] = my_tuple;
[02:57:04] <valexey> и после этого таки будут a и b у тебя
[02:57:57] <valexey> auto [ var1, var2 ] = tuple;
[02:58:03] <valexey> https://skebanga.github.io/structured-bindings/
[02:58:05] <valexey> вот так вот
[03:00:52] <valexey> ньяшно же!
[04:25:41] <vlad2> Зачет!
[18:07:36] <vlad2> variadic templates рулят!