RUVDS.com corporate blog
Programming
C++
Comments 14
+2
бывает очень непросто, как говорится, «не выстрелить себе в ногу»
И с каждым годом выстрелить себе в ногу можно все более необычным методом :)

мысли вслух
Не поймите неправильно, я обожаю С++, особенно когда на нем написаны адекватные и красивые вещи. И расстраиваюсь, когда приходится разбираться в подобном коде:
 PositionType& posAt(PositionType pos) {
        return posBuffer[pos.y * input.getWidth() + pos.x];
    }

    void transformAt(PositionType pos, PositionType target /* ... */) {
        target += pos;
        /* ... bla-bla ... */
            posAt(pos) = target = posAt(target);
            setPixel<OutputType>(pos, std::sqrt(square(pos.x - target.x) + square(pos.y - target.y)));
        /* ... bla-bla ... */
    }


А скоро в подобных реализациях еще появятся и лямбды, и анонимные функции для пущей читабельности.
0
Ну это ещё травоядное, Вы посмотрите в набор последних предложений по корутинам…
+10
auto a_float = 26.04; // выводится тип float

Вроде по стандарту литерал с плавающей точкой имеет тип double?
+7
Да

И в статье ошибки с выводом типов шаблонов.

В результате оказывается, что раньше писали так:

std::pair<std::string, int> user = {"M", 25};


С выходом C++ 17 эту конструкцию стало можно заменить на эту:

std::pair user = {"M", 25};



Неправильно заменять, т.к. тип будет другим:
std::pair<const char*, int>

1. Мы не сможем изменять эту строку.
2. Сама строка «М» будет храниться статически.
+4
>> std::pair user = {«M», 25};
а почему строковый литерал внезапно станет std::string?
+2
Да много чего интересного есть в новых версиях, можно упомянуть обобщённый функциональный объект function<>, классы свойств trait, перегрузку операторов для произвольных типов (не объектов класса)
+4
К нашему счастью, в C++ 11 появились умные указатели, которые гораздо удобнее обычных.
Они появились гораздо раньше, а к моменту появления C++ 11 первая их реинкарнация в виде auto_ptr уже успела устареть и объявлена deprecated
+7
Все тоже самое, что постили уже много-много раз да еще и ошибками (Причем с выводимыми типами, что как бы намекает). При этом ни слова не сказано про тип данных замыкание, и как использование auto позволяет сохранять лямбды переменные и использовать в качестве параметров функций.

И самое на мой взгляд главное о чем не сказано это расширение стандартной библиотеки: потоки, chrono, алгоритмы и так далее из всего этого сказано только про умные указатели.
+3
Главное что надо знать всем программистам:
Последние нововведения в C++ были созданы, чтобы исправить предыдущие нововведения.

0
Следующие нововведения будут похоже для того же и созданы) И так по кругу.
+2
Но современный C++ стал гораздо дружелюбнее, чем раньше.


А, так вот почему я так и не могу до сих пор сказать, что знаю Си++. :)
0
Как я в свое время протащился от появления в плюсах: лямбд, замыканий и списка инициализации!
Кстати, в статье не хватает параграфа о mutable, имхо.
0
похоже автор как-то очень сильно ограничился.

а как же variadic templates?
а как же make_tuple?
а как же decltype?
а как же эта масса новых полезных шаблонов в STL?
а как же unordered_map и unordered_set?
а как же move semantic?

Only those users with full accounts are able to leave comments. , please.