/
anenkov
/
CppUtils
Обзор
Документация
Войти
/
anenkov
/
CppUtils
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples.cpp
77 строк
1 KB
Aleksandr Anenkov
Add utils::not_null
01 авг 2024, 01:18
01 авг 2024, 01:18
bc64f2b
Код
Авторство
О чём код?
#include "utils.hpp" #include <algorithm> #include <iostream> #include <memory> #include <vector> void throw_if_not_cond_sample(int num) { throw_if_not(num > 1); } void throw_with_message_if_not_cond_sample(int num) { throw_with_message_if_not(num > 1, "Wrong num"); } void view_of_sample(utils::view_of<int> auto&& num) { std::ranges::copy(num, std::ostream_iterator<int>(std::cout, " ")); std::cout << "\n"; } void not_null_sample(utils::not_null<int*> /*ptr*/) { } void not_null_sample2(utils::not_null<const std::shared_ptr<int>&> /*ptr*/) { } void not_null_sample3(utils::not_null<const std::shared_ptr<int>> /*ptr*/) { } void not_null_sample4(utils::not_null<int*>&& /*ptr*/) { } int main() { try { throw_if_not_cond_sample(0); } catch(const std::exception& e) { std::cout << e.what() << std::endl; } try { throw_with_message_if_not_cond_sample(0); } catch(const std::exception& e) { std::cout << e.what() << std::endl; } const auto nums = std::vector<int>{1, 2, 3, 4, 5}; view_of_sample(nums); int a = 1; auto b = std::make_shared<int>(2); not_null_sample(&a); not_null_sample2(b); not_null_sample3(b); not_null_sample4(utils::not_null{ &a }); try { not_null_sample3(std::shared_ptr<int>{}); // not_null_sample3(nullptr); } catch (std::exception& e) { std::cout << e.what() << std::endl; } }