Comments 14
бывает очень непросто, как говорится, «не выстрелить себе в ногу»И с каждым годом выстрелить себе в ногу можно все более необычным методом :)
мысли вслух
Не поймите неправильно, я обожаю С++, особенно когда на нем написаны адекватные и красивые вещи. И расстраиваюсь, когда приходится разбираться в подобном коде:
А скоро в подобных реализациях еще появятся и лямбды, и анонимные функции для пущей читабельности.
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 ... */
}
А скоро в подобных реализациях еще появятся и лямбды, и анонимные функции для пущей читабельности.
+2
auto a_float = 26.04; // выводится тип float
Вроде по стандарту литерал с плавающей точкой имеет тип double?
+10
Да
И в статье ошибки с выводом типов шаблонов.
Неправильно заменять, т.к. тип будет другим:
1. Мы не сможем изменять эту строку.
2. Сама строка «М» будет храниться статически.
И в статье ошибки с выводом типов шаблонов.
В результате оказывается, что раньше писали так:
std::pair<std::string, int> user = {"M", 25};
С выходом C++ 17 эту конструкцию стало можно заменить на эту:
std::pair user = {"M", 25};
Неправильно заменять, т.к. тип будет другим:
std::pair<const char*, int>
1. Мы не сможем изменять эту строку.
2. Сама строка «М» будет храниться статически.
+7
>> std::pair user = {«M», 25};
а почему строковый литерал внезапно станет std::string?
а почему строковый литерал внезапно станет std::string?
+4
Да много чего интересного есть в новых версиях, можно упомянуть обобщённый функциональный объект function<>, классы свойств trait, перегрузку операторов для произвольных типов (не объектов класса)
+2
К нашему счастью, в C++ 11 появились умные указатели, которые гораздо удобнее обычных.Они появились гораздо раньше, а к моменту появления C++ 11 первая их реинкарнация в виде auto_ptr уже успела устареть и объявлена deprecated
+4
Все тоже самое, что постили уже много-много раз да еще и ошибками (Причем с выводимыми типами, что как бы намекает). При этом ни слова не сказано про тип данных замыкание, и как использование auto позволяет сохранять лямбды переменные и использовать в качестве параметров функций.
И самое на мой взгляд главное о чем не сказано это расширение стандартной библиотеки: потоки, chrono, алгоритмы и так далее из всего этого сказано только про умные указатели.
И самое на мой взгляд главное о чем не сказано это расширение стандартной библиотеки: потоки, chrono, алгоритмы и так далее из всего этого сказано только про умные указатели.
+7
Главное что надо знать всем программистам:
Последние нововведения в C++ были созданы, чтобы исправить предыдущие нововведения.
+3
Но современный C++ стал гораздо дружелюбнее, чем раньше.
А, так вот почему я так и не могу до сих пор сказать, что знаю Си++. :)
+2
Как я в свое время протащился от появления в плюсах: лямбд, замыканий и списка инициализации!
Кстати, в статье не хватает параграфа о mutable, имхо.
Кстати, в статье не хватает параграфа о mutable, имхо.
0
похоже автор как-то очень сильно ограничился.
а как же variadic templates?
а как же make_tuple?
а как же decltype?
а как же эта масса новых полезных шаблонов в STL?
а как же unordered_map и unordered_set?
а как же move semantic?
а как же variadic templates?
а как же make_tuple?
а как же decltype?
а как же эта масса новых полезных шаблонов в STL?
а как же unordered_map и unordered_set?
а как же move semantic?
0
Sign up to leave a comment.
Современные возможности C++, о которых надо знать всем программистам