Українська
Відкрити в Telegram

Пост Там позавчора нарешті затвердили новий стандарт C++26, тож усіх вітаю. Тепер звісно доведеться почекати ще років 3–5–7, …

31 березня 2026
С
Сіпласпластик
Там позавчора нарешті затвердили новий стандарт C++26, тож усіх вітаю. Тепер звісно доведеться почекати ще років 3–5–7, доки його імплементують у компіляторах, і все ж. Саттер каже, мовляв, це найпотужніший стандарт з часів C++11, тож дивитимуся потихеньку, що там цікавого додали. Сьогодні про одну з таких фічей мова. Мені завжди подобалося, як в 💻 (точніше SPARK) можна описувати перед- та постумови для функцій (приклад поцупив звідси): procedure Set_Speed (S : in out Speed_Knots; New_Value : Speed_Knots) with Pre => New_Value >= 0.0 and New_Value <= 1000.0, Post => S = New_Value; Віднині в 💻 теж можна буде так робити! Має бути щось на кшталт отакого: void set_speed(speed_knots & s, speed_knots new_value) pre(new_value >= 0.0 && new_value <= 1000.0) post(s == new_value); Ну або уявімо, що треба перевірити значення, яке повертається, то буде щось отаке: auto calculate(auto && val) post(r: is_valid(r)); Таким чином кількість того, що в C++ можна писати між блоком параметрів функції та її тілом, небезпечно наближається до Ada 🙂 Фіча зветься контрактами, якщо шо, і там окрім pre та post ще додали так званий contract_assert. На вигляд наче звичайний assert, як і був, тільки тепер не сішний макрос, а прям інструкція самої мови. Можна користуватися всередині функцій, щоб додати обрисів очікуванням від коду. Отже, загалом корисно на вигляд. Хоча спершу варто почитати правила, за якими ця фіча взаємодіє з іншими 😉 На закуску тримайте приклад, як це виглядає в трохи реальнішому коді. Тут вам і концепти, і контракти, і constexpr, і trailing return type, і structured binding. template <std::floating_point T> constexpr auto normalize(std::array<T, 3> vector) noexcept -> std::array<T, 3> pre(is_normalizable(vector)) post(vector: is_normalized(vector)) { auto& [x, y, z]{vector}; const auto norm{std::hypot(x, y, z)}; x /= norm, y /= norm, z /= norm; return vector; }
5 · 862 ·

Поруч у стрічці

ССіпласпластикСьогодні про корисне й актуальне. З усіма цими вашими ШІ-агентами штибу клода й копайлота яка проблема? Вони полюбляють позапускати мутних команд у процесі дослССіпласпластикПишу останні пару місяців на TypeScript. Доволі цікаво, як ця мова розвивалася. Якщо в тому ж Dart сіли й зробили нормальну й «звичну» типізацію, то в TS взяли
це повідомлення
ССіпласпластикПерезавантажив увечері комп, що я роблю вкрай рідко, запускаю зранку бекенд через Docker Compose… а останній висить і ніц не робить! Взагалі. Я вже і кеші почисССіпласпластикДумав написати про це ще минулої середи, але ви мені тоді точно не повірили би 😄 Отже, в C++ тепер є новий різновид циклів — template for 🙂 Хочемо, ми, наприкла
ССіпласпластикСіпласпластик@cpplastic · канал · Технології
817підписників433середнє охоплення поста
Стрічка майданчика Відкрити в Telegram

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо