Рубрика «c++11»
Zero-cost Property в С++
2024-10-02 в 19:11, admin, рубрики: c++, c++11, code, example, examples, optimization, properties, property, syntax sugar, tricksРасскажу об одном решении которое имеет больше смысла в качестве упражнения а не практической пользы. Постановка задачи звучит так: Хочу получить в C++ семантику property как в C# и без накладных расходов.
В начале будет результат к которому я пришел, затем пояснения и выводы.
К слову, компиляторы Microsoft имеют способ описать property но это не является частью стандарта C++.
Сразу отмечу что property получились с значительными ограничениями и больше подходят для имитации SwizzlingЧитать полностью »
std::array в С++ не медленнее массива в С
2024-09-27 в 11:44, admin, рубрики: array, c-cpp, c++, c++ библиотеки, c++0x, c++11, C++14, c++17, C++20, c++23Или почему не нужно бояться того, что удобно работает.
Стойте! Уберите руки от клавиатуры, дайте человеку сказать! У этой статьи есть обоснованные причины и благая цель! В прошлой моей статье о массивах (которую необязательно читать для понимания статьи этой) некоторые читатели выражали озабоченность тем, что std::arrayЧитать полностью »
Малоизвестные и интересные особенности C и C++
2024-01-12 в 16:40, admin, рубрики: C, C and C++, c++, c++11, C++14, c++17, exceptions, partial template specialization, templates, Virtual InheritanceВ C и C++ есть особенности, о которых вас вряд ли спросят на собеседовании (вернее, не спросили бы до этого момента). Почему не спросят? Потому что такие аспекты имеют мало практического значения в повседневной работе или попросту малоизвестны.
Продление жизни временных значений в С++: рецепты и подводные камни
2022-06-04 в 12:20, admin, рубрики: auto, c++, c++11, C++14, decltype, l-value reference, nrvo, rvalue reference, temporary object, xvalue, Программирование, с++17Прочитав эту статью вы узнаете:
-
Способы, которыми можно продлить время жизни временного объекта в С++.
-
Рекомендации и подводные камни этого механизма, с которыми может столкнуться С++ программист, и с которыми сталкивался на работе я.
Информация из статьи может быть полезна как новичкам, так и профессионалам.
Если заинтересовало, то самое время налить чая, и погнали разбираться где тут референсы повисли.
Оглавление
ARM и программирование без блокировок
2021-01-22 в 7:05, admin, рубрики: c++, c++11, lock-free, Блог компании Яндекс, Программирование, Процессоры
Выпуск ARM-процессора Apple M1 вдохновил меня на то, чтобы написать в Твиттер про опасности программирования без блокировок (lock-free). Этот твит вызвал бурную дискуссию. Обсуждение прошло довольно неплохо, учитывая то, что попытки втиснуть в рамки Твиттера обсуждениие такой сложной темы, как модели памяти центрального процессора, — в принципе бессмысленны. Но у меня осталось желание немного раскрыть тему.
Этот пост задуман не только как обычная вводная статья про опасности программирования без блокировок (о которых я в последний раз писал около 15 лет назад), но и как объяснение, почему слабая модель памяти ARM ломает некоторый код, и почему этот код, вероятно, не работал изначально. Я также хочу объяснить, почему стандарт C++11 значительно улучшил ситуацию в программировании без блокировок (несмотря на возражения против противоположной точки зрения).
Читать полностью »
Под капотом сортировок в STL
2020-10-08 в 13:23, admin, рубрики: algorithms, c++, c++11, C++14, c++17, sorting, Алгоритмы, Блог компании Mail.Ru Group, Программирование
Стандарт С++ почти никогда не указывает, как именно должен быть реализован тот или иной std алгоритм. Дается только описание того, что на входе, что на выходе и асимптотические ограничения по времени работы и памяти. В статье я постарался прикинуть, какие математические алгоритмы и структуры данных имели ввиду авторы стандарта, указывая ограничения для той или иной сортировки и для некоторых других алгоритмов. А так же как эти алгоритмы реализованы на практике.
При написании статьи я использовал стандарт C++17. В качестве реализаций рассматривал GCC 10.1.0 (май 2020) и LLVM/Clang 10.0.0 (март 2020). В каждой и них есть своя реализация STL, а значит и std алгоритмов.
Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби» — разбор полётов
2020-01-18 в 8:09, admin, рубрики: c++, c++11, C++14, c++17, shared_from_this, smart pointers, std::enable_shared_from_this, std::shared_ptr, weak_from_this, умные указателиВ настоящей статье приводится разбор вариантов устранения антипаттерна «Зомби», описанного в первой части: Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби».
Читать полностью »
Сказ об опасном std::enable_shared_from_this, или антипаттерн «Зомби»
2019-11-09 в 17:53, admin, рубрики: c++, c++11, C++14, c++17, shared_from_this, smart pointers, std::enable_shared_from_this, std::shared_ptr, weak_from_this, умные указателиВ статье приводится опасный антипаттерн «Зомби», в некоторых ситуациях естественным образом возникающий при использовании std::enable_shared_from_this. Материал — где-то на стыке техники современного C++ и архитектуры.
Читать полностью »
Техника избежания неопределённого поведения при обращении к синглтону
2019-06-16 в 12:41, admin, рубрики: c++, c++11, C++14, c++17, singleton, smart pointers, std::shared_ptr, std::weak_ptr, синглтон, умные указателиВ статье рассмотрены причины возникновения и способы избежания неопределённого поведения при обращении к синглтону в современном c++. Приведены примеры однопоточного кода. Ничего compiler-specific, всё в соответствии со стандартом.
Читать полностью »