Рубрика «c++11» - 12

С момента выхода стандарта С++11 прошло уже больше двух лет. И большинство С++ разработчиков уже знакомы с основными его нововведениями и костылями. Одним из нововведений было добавление в стандартную библиотеку класса std::function.

Классы std::function и boost::function являются высокоуровневыми обертками над функциями и функциональными объектами. Объекты таких классов позволяют хранить и вызывать функции и функторы с заданной сигнатурой, что бывает удобно, например, при создании callback вызовов (например, мы можем регистрировать несколько обработчиков, и это могут быть как обычные функции, так и объекты с определенным оператором =)

©

Этого замечательного шаблонного класса давно не хватало нам. Однако, в погоне за универсальностью разработчикам стандартной библиотеки пришлось пойти на некоторые жертвы. Так как С++ используется в первую очередь там, где необходимо выжать максимальную скорость из железа, со больше всего разочаровывает любой overhead по скорости. В частности, к таким вещам можно отнести:

  1. При создании объекта std::function вызывается оператор new, как следствие того, что std::function позволяет сохранять в себя функтор произвольного размера.
  2. std::function имеет семантику копирования, которая, в принципе, редко когда бывает необходима в при действиях с функторами (в связи с появлением move-семантики), но стоит определенных ресурсов CPU.

Как от этого избавиться?
Читать полностью »

Meeting C++, Dusseldorf

Так вышло, что у меня получилось принять участие в работе конференции, посвящённой C++. Уровень, конечно, не GoingNative: доклады были разного уровня. Как очень сильные и интересные, так и совсем пустые. Самым главным для меня была атмосфера — давно я ни с кем лично не обсуждал столько интересных тем. Это мне так понравилась, что я загорелся идеей создать в Санкт-Петербурге C++ User Group, чтобы больше общаться лично с коллегами по цеху. Но об этом как-нибудь потом, а пока о конференции. Не буду описывать и пересказывать все доклады, отмечу только наиболее интересные мне темы и темы, которые затрагивались почти в каждом докладе.
Читать полностью »

На этот раз нововведений гораздо меньше, чем в первой части. Все-таки С++14 считается незначительным релизом, нацеленным скорее на устранение недочетов С++11, чем привнесение новых возможностей.

Краткий перечень:

  • Освобождение памяти определенного размера
  • Одинарная кавычка, как цифровой разделитель
  • Аттрибут [[deprecated]]
  • Пользовательские литералы для std::complex
  • Filesystem API
  • Преобразование сетевого порядка байт

Обзор новых возможностей С++14: Часть 1
Текущий черновик стандарта

Читать полностью »

Тёмные углы C и C++

>> Мопед не мой, публикуется от имени человека, которого нет на хабре. Соответственно, все вопросы ему на e-mail (либо инвайт, тогда сможет ответить в комментариях).

Привет, читатели!

Я, как и многие из вас, работаю программистом. Официально моя должность не привязана к какому-либо конкретному языку программирования, что, кстати говоря, прекрасно, ведь для каждой задачи должны быть свои инструменты. Но довольно часто выбора просто нет (например, из-за особенностей реализации той или иной платформы), в связи с чем подавляющее большинство моих проектов пишутся на C++.

Я не гуру C++. Я не могу похвастаться тем, что с уверенностью распознаю любую шаблонную конструкцию данного языка или возьму и вспомню, что возвращает какая-то редко используемая мной функция из стандартной библиотеки без помощи документации.

Думаю, вы со мной согласитесь, что C++ — язык с очень высоким порогом вхождения. Серьёзно! Я изучаю этот язык уже больше 3 лет, и практически каждую неделю открываю в нём что-то новое и удивительное. Именно об этом «новом и удивительном» и пойдёт речь в данной статье. Кому интересно — милости прошу под кат.
Читать полностью »

Введение

В этой статье нет ничего сверхъестественного. Я хотел просто собрать вместе все нюансы и проблемы, с которыми я столкнулся, связанные с построением Qt в одной статье — вдруг кому-нибудь пригодится.
Читать полностью »

Всем доброго времени суток.
Сегодня я расскажу о двух стандартных подходах для сравнения двух файлов и о тонкостях реализации одного из них.
Внимание, пост немаленький!
Читать полностью »

В этой статье на примере реализации механизма обратного вызова будет рассмотрена возможности применения лямбда функций в удобной и быстрой форме.
Читать полностью »

в 17:48, , рубрики: c++, c++11, tutorial, Песочница, метки: , ,

Всем привет!

Писал когда-то статью, почти такую же (Делегат на С++).
После этого, начал изучать новые технологии (в частности С++11), где мне понравилась новая возможность, которая называется «Variadic Templates». В общем, изучение и использование новых возможностей этого языка и побудило меня к написанию этой статьи.
Читать полностью »

ИМХО (Имею Мнение Хрен Оспоришь)

С моей точки зрения самое полезное, что может сделать программист для повышения своего профессионального уровня — это написание велосипедов. Велосипедостроение — очень увлекательный процесс. Иногда он увлекает больше, чем задача, ради которой сам велосипед и затевался. При написании велосипеда (под велосипедом я понимаю реализацию уже существующего) происходит более глубокое понимание уже существующих решений и техник.
Не бойтесь велосипедов. Или еще один Grand Central Dispatch (GCD) на C++11
Читать полностью »

В апреле в Бристоле прошла встреча комитета С++, на которой были рассмотрены первые предложения по внесению изменений в новый стандарт С++14. Все рассматриваемые в этой статье изменения были одобрены на этой встрече и уже занимают свое почетное место в последней версии черновика нового стандарта (N3690 от 15 мая 2013).

Краткий перечень:

  • Автоматическое определение типа возвращаемого значения для обычных функций
  • Обобщенная инициализация захваченных переменных лямбд с поддержкой захвата-по-перемещению
  • Обобщенные (полиморфные) лямбда-выражения
  • Упрощенные ограничения на создание constexpr функций
  • Шаблоны переменных
  • exchange
  • make_unique
  • Обособленные строки
  • Пользовательские литералы для типов стандартной библиотеки
  • optional
  • shared_mutex и shared_lock
  • dynarray

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js