GSL — это не просто модная библиотека. Это набор практик от создателей C++, упакованный в код😎#include <gsl/gsl>
// ❌ Традиционная проверка
void setAge(Person& p, int age) {
if (age < 0 || age > 150) {
throw std::invalid_argument("Invalid age");
}
p.age = age;
}
// ✅ GSL: семантика ясна из кода
void setAge(Person& p, int age) {
Expects(age >= 0 && age <= 150); // Precondition
p.age = age;
Ensures(p.age == age); // Postcondition
}
❗️Что даёт GSL:
•
Expects() — preconditions (проверка входа)•
Ensures() — postconditions (проверка выхода)•
gsl::not_null<T*> — указатель, который не может быть nullvoid process(gsl::not_null<int*> data) {
// Компилятор гарантирует: data != nullptr
*data = 42; // Безопасно без if
}‼️ В debug режиме — runtime проверки, в release — могут быть отключены.
👉 Библиотека
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность