Ограничиваем шаблоны через Concepts и requires в C++20!
Шаблоны в C++ мощные, но часто сложно читать ошибки при неправильных типах. С
Вместо шаблонов «на авось» — пишем осмысленные требования!
Допустим, у нас есть функция, которая должна работать только с числовыми типами:
Теперь, если вызвать
Можно использовать
🔥 Это позволяет задавать чёткие ограничения для шаблонов. Программы становятся безопаснее, читаемее и понятнее!
📣 C++ Ready | #практика
Шаблоны в C++ мощные, но часто сложно читать ошибки при неправильных типах. С
Concepts
стало проще: теперь можно явно ограничивать допустимые типы.Вместо шаблонов «на авось» — пишем осмысленные требования!
Допустим, у нас есть функция, которая должна работать только с числовыми типами:
#include <concepts> // std::integral, std::floating_point
#include <iostream>
// Обобщённая функция только для целых чисел
template <std::integral T>
void print_twice(T value) {
std::cout << value << " " << value << '\n';
}
Теперь, если вызвать
print_twice("hello")
— компиляция просто не пройдёт. А с print_twice(42)
— всё отлично.Можно использовать
requires
для более сложной логики:template <typename T>
requires std::floating_point<T>
void print_square(T value) {
std::cout << "Квадрат: " << value * value << '\n';
}
🔥 Это позволяет задавать чёткие ограничения для шаблонов. Программы становятся безопаснее, читаемее и понятнее!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥9❤6
❤19🔥9👍5
Класс позволяет связать любой callable, выполнить его в удобный момент, получить результат выполнения через возвращённый future, повторно использовать задачу, обменивать её состояние и освобождать связанный callable в виде std::function.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍7❤6🤝2
Media is too big
VIEW IN TELEGRAM
Платформа охватывает все ключевые аспекты языка, предлагая удобный подход как для новичков, так и для опытных программистов.
Она предлагает пошаговые учебники, практические примеры и онлайн-компилятор для изучения плюсов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍7🔥4
Консольная утилита, которая с помощью
Boost.Progress
визуально отображает обратный отсчёт заданного числа секунд.Важно помнить:
• Прогресс-бар наглядно отражает состояние выполнения заданного таймера.
• Гибкое перенаправление вывода позволяет интегрировать бар куда угодно.
• Принцип работы легко адаптируется к любым другим задачам консоли.
Это позволяет просто и наглядно адаптировать визуализацию прогресса под другие консольные задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤8👍5🤝1
В этой статье:
• Пошаговая настройка среды и сохранение картинки в формате PPM
• Отрисовка карты уровня в виде сетки из прямоугольников
• Добавление игрока на карту с простыми координатами
🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍5🔥4
Позволяет работать с фрагментами текста очень быстро: брать и обрабатывать куски строки, пропускать уже обработанные символы, искать разделители и безопасно передавать указатель с длиной в C-функции — всё это без лишних выделений памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥6🤝5👍4