Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 134 сообщений
Cообщения с меткой

c++20 - Самое интересное в блогах

Следующие 30  »
rss_habr

std::conditional_variable и std::atomic_flag в С++20

Понедельник, 02 Января 2023 г. 18:00 (ссылка)

С++20 добавил новую функциональность для atomic_flag. Посмотрим как ее можно использовать, сравним с conditional_variable.

Читать далее

https://habr.com/ru/post/708918/?utm_source=habrahabr&utm_medium=rss&utm_campaign=708918

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Какую модель памяти следует использовать в языке Rust?

Вторник, 08 Ноября 2022 г. 12:50 (ссылка)

image



В этой статье рассматривается несколько альтернативных моделей памяти для языка Rust. Надеюсь, эта дискуссия будет ценна всему сообществу Rust – но, в конце концов, это их язык, поэтому и выбор модели памяти тоже за ними.



Эта дискуссия ведется с позиций принятой в Rust безбоязненной конкурентности. Затравкой для нее послужили различные обсуждения, которые я наблюдал и в которых сам участвовал, работая над этой серией статей. Разумеется, мнения у разных членов сообщества тоже разнятся, люди могут обоснованно отстаивать разные варианты решений. Те, кто меня знают, понимают, что эти точки зрения серьезно расходятся с моей. Однако, моя точка зрения продиктована тем, что я давно работаю в условиях максимально возможной производительности, масштабируемости, молниеносного отклика, энергоэффективности, устойчивости и многого другого. В таких условиях определенная перестраховка – выбор не только мудрый, но и жизненно необходимой. В авиации есть примета, что есть пилоты отважные, а есть старые, но отважные пилоты до старости не доживают.



Тем не менее, я рассчитываю, что мой более чем тридцатилетний опыт работы с конкурентностью и моя работа над моделью памяти в C/C++ (безотносительно memory_order_consume), а также моя роль ведущего специалиста по поддержке модели памяти ядра (LKMM) послужат хорошей отправной точкой, чтобы высказаться о более прозаических задачах, решение которых, я уверен, стремятся поддержать в сообществе Rust.
Читать дальше →

https://habr.com/ru/post/697882/?utm_source=habrahabr&utm_medium=rss&utm_campaign=697882

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Упрощаем код с помощью if constexpr и концептов C++17/C++20

Пятница, 16 Сентября 2022 г. 16:11 (ссылка)

До C++17 у нас было несколько довольно неэлегантных способов написать static if (if, который работает во время компиляции). Например, мы можем использовать статическую диспетчеризацию или SFINAE. К счастью, ситуация изменилась к лучшему, ведь теперь мы можем воспользоваться для этого if constexpr и концептами C++20!

Ну что ж, давайте разберемся, как мы можем использовать это в качестве замены std::enable_if кода!

Читать далее

https://habr.com/ru/post/688688/?utm_source=habrahabr&utm_medium=rss&utm_campaign=688688

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Пользовательские типы и std::format в C++20

Среда, 07 Сентября 2022 г. 12:26 (ссылка)

std::format — очень полезное (и серьезное) нововведение C++20, позволяющее нам форматировать текст в строки удобным и эффективным образом. Оно привносит в язык форматирование в стиле Python в сочетании с безопасностью и простотой использования.

В этой статье я расскажу, как реализовать пользовательские средства форматирования (форматтеры) в соответствии с новой std::format архитектурой.

Читать далее

https://habr.com/ru/post/686900/?utm_source=habrahabr&utm_medium=rss&utm_campaign=686900

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Еще один пересказ «туториала» Джека Креншоу

Вторник, 30 Августа 2022 г. 15:27 (ссылка)

https://habr.com/ru/post/685434/?utm_source=habrahabr&utm_medium=rss&utm_campaign=685434

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Feature freeze С++23. Итоги летней встречи комитета

Вторник, 26 Июля 2022 г. 10:51 (ссылка)



На недавней встрече комитет C++ «прорвало», и в черновую версию C++23 добавили:




  • std::mdspan

  • std::flat_map

  • std::flat_set

  • freestanding

  • std::print("Hello {}", "world")

  • форматированный вывод ranges

  • constexpr для bitset, to_chars/from_chars

  • std::string::substr() &&

  • import std;

  • std::start_lifetime_as

  • static operator()

  • [[assume(x > 0)]];

  • 16- и 128-битные float

  • std::generator

  • и очень много другого

Подробности

https://habr.com/ru/post/678760/?utm_source=habrahabr&utm_medium=rss&utm_campaign=678760

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] Эволюция лямбд в C++14, C++17 и C ++20

Понедельник, 27 Июня 2022 г. 12:41 (ссылка)

Лямбда-выражения — одна из самых популярных фич современного C++. С тех пор, как они были представлены в C++11, лямбды проникли практически в каждую кодовую базу на C++. Цель этой статьи — рассказать об основных эволюционных этапах в истории лямбда-выражений.

Читать далее

https://habr.com/ru/post/673580/?utm_source=habrahabr&utm_medium=rss&utm_campaign=673580

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Holy C++

Воскресенье, 19 Июня 2022 г. 20:10 (ссылка)

В этой статье постараюсь затронуть все вещи, которые можно без зазрения совести выкинуть из С++ не потеряв ничего(кроме боли), уменьшить стандарт, нагрузку на создателей компиляторов, студентов изучающих язык и мемосоздавательный потенциал громадности С++

В первую очередь хочется убрать из языка то, что приводит к частым ошибкам и мешает развитию языка, тут идеальным кандидатом можно назвать

1 - union - сумм тип из 70х, в С идея хранения одного типа из нескольких в одном участке памяти выглядит неплохо и сейчас, ведь там все типы это набор байт с заданным размером.

В С++ же использование union это автоматическое undefined behavior, например:

Читать далее!

https://habr.com/ru/post/672282/?utm_source=habrahabr&utm_medium=rss&utm_campaign=672282

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[Перевод] В апреле выйдет GNU Compiler Collection 12

Вторник, 26 Апреля 2022 г. 23:23 (ссылка)

Смягчение уязвимости Trojan Source, оптимизация функций приведения типов, многомерный оператор [], подавление предупреждений о вендорных атрибутах — вот лишь некоторые возможности GCC 12. Подробностями делимся к старту курса по разработке на C++.

Читать далее

https://habr.com/ru/post/662932/?utm_source=habrahabr&utm_medium=rss&utm_campaign=662932

Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

Обзор всего доступного в С++ type erasure

Воскресенье, 24 Апреля 2022 г. 14:05 (ссылка)

Техника стирания типов - type erasure - известна довольно давно, хоть её и долго не замечали. Тем не менее кажется только в последнюю декаду она стала из игрушки и костылей превращаться в мощный инструмент, использующийся каждый день в разработке.

Если спросить современного С++ разработчика какие примеры type erasure он видел / использовал, то вероятно он ответит что то про std::function и возможно про std::any, но это лишь малая часть всех применений этого замечательного инструмента!

В статье я постараюсь описать все возможные виды type erasure в современном С++, но начать стоит с определения.

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

Начнём с того, что было уже в С и о чём часто забывают говоря об erasure

void* - мы стёрли всю информацию о типе под указателем, не можем ничего прочитать, но с другой стороны доступ к данным у нас абсолютно без оверхеда! Достаточно угадать тип. Часто внутри именно на этом и построены другие более сложные стирания. Ну и конечно примерно в эту труху из байтов компилятор перетирает всю нашу систему типов в процессе работы.

Кстати, насчёт байтов:

std::byte (since C++17) / unsigned char / char так исторически сложилось, что в С все использовали чары для работы с сырыми байтами, поэтому для них в языке С++ исключение и указатель на них можно приводить к указателю на любой другой тип. Это не обходится без последствий и иногда из-за этого строки теряют некоторые оптимизации, поэтому сначала добавили std::byte, а потом начали потихоньку заменять чары (char8_t since C++20), но это уже совсем другая история. В контексте стирания типов нам важно, что мы получили способность читать данные из стёртого типа, а составив массив мы получим ещё и верхнюю границу размера типа, что конечно немного, но с void и так нельзя.

[erased]

https://habr.com/ru/post/662628/?utm_source=habrahabr&utm_medium=rss&utm_campaign=662628

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_habr

[recovery mode] Как перестать некорректно выражаться в коде

Понедельник, 11 Апреля 2022 г. 14:08 (ссылка)

Мудрецы мира С++ часто напоминают нам о том как важно максимально точно выражать свои мысли в коде, делать код понятным и простым, не теряя при этом (а зачастую и выигрывая) в эффективности. Но задумайтесь как выглядит в С++ код связанный с динамическим полиморфизмом.

Взглянуть на С++ по новому

https://habr.com/ru/post/660201/?utm_source=habrahabr&utm_medium=rss&utm_campaign=660201

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<c++20 - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda