Сергей Добычин — constexpr-аллокатор для контейнеров стандартной библиотеки
Одна из главных фич, которая выделяет С++ среди других языков — константные вычисления. С каждым новым стандартом языка поддержка константных вычислений становится все более продвинутой.
В С++ 20 появились аллокации памяти в constexpr-выражениях, и стало возможным использовать std::vector и std::string в константных выражениях.
Но есть одно но: использовать их можно только внутри constexpr, из constexpr-функции нельзя вернуть std::string или std::vector.
В докладе рассмотрели, как, используя только лишь возможности С++23, написать аллокатор, с помощью которого можно реализовать top-level constexpr std::string, std::vector и остальные контейнеры стандартной библиотеки.
2:55 Начало. Transient выделения памяти при компиляции. Невозможность non-transient в C++ 8:45 Подробный разбор предложения P0639 по CE аллокатору 11:30 Проблемы с размером буфера 18:16 Двухэтапное определения размера буфера во время компиляции 20:40 Постановка задачи: как сделать чтобы CE аллокатор сам определял размер буфера? Общий вид решения. 23:13 Интересные детали реализации 27:45 Передача инициализирующего значения через типы (разбор P2781) 31:20 Завершение: QR код на полное решение в C++20 и примеры 34:08 Вопросы
Сергей Добычин — constexpr-аллокатор для контейнеров стандартной библиотеки
Одна из главных фич, которая выделяет С++ среди других языков — константные вычисления. С каждым новым стандартом языка поддержка константных вычислений становится все более продвинутой.
В С++ 20 появились аллокации памяти в constexpr-выражениях, и стало возможным использовать std::vector и std::string в константных выражениях.
Но есть одно но: использовать их можно только внутри constexpr, из constexpr-функции нельзя вернуть std::string или std::vector.
В докладе рассмотрели, как, используя только лишь возможности С++23, написать аллокатор, с помощью которого можно реализовать top-level constexpr std::string, std::vector и остальные контейнеры стандартной библиотеки.
2:55 Начало. Transient выделения памяти при компиляции. Невозможность non-transient в C++ 8:45 Подробный разбор предложения P0639 по CE аллокатору 11:30 Проблемы с размером буфера 18:16 Двухэтапное определения размера буфера во время компиляции 20:40 Постановка задачи: как сделать чтобы CE аллокатор сам определял размер буфера? Общий вид решения. 23:13 Интересные детали реализации 27:45 Передача инициализирующего значения через типы (разбор P2781) 31:20 Завершение: QR код на полное решение в C++20 и примеры 34:08 Вопросы
Bitcoin is built on a distributed digital record called a blockchain. As the name implies, blockchain is a linked body of data, made up of units called blocks that contain information about each and every transaction, including date and time, total value, buyer and seller, and a unique identifying code for each exchange. Entries are strung together in chronological order, creating a digital chain of blocks. “Once a block is added to the blockchain, it becomes accessible to anyone who wishes to view it, acting as a public ledger of cryptocurrency transactions,” says Stacey Harris, consultant for Pelicoin, a network of cryptocurrency ATMs. Blockchain is decentralized, which means it’s not controlled by any one organization. “It’s like a Google Doc that anyone can work on,” says Buchi Okoro, CEO and co-founder of African cryptocurrency exchange Quidax. “Nobody owns it, but anyone who has a link can contribute to it. And as different people update it, your copy also gets updated.”
NEWS: Telegram supports Facetime video calls NOW!
Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.