Хотите безопасную сериализацию? Создайте концепт для проверки того, что тип можно сериализовать и десериализовать.
#include <concepts>
#include <iostream>
#include <string>
#include <sstream>
// Концепт для сериализуемых типов
template<typename T>
concept Serializable = requires(T obj, std::ostream& os, std::istream& is) {
{ obj.serialize(os) } -> std::same_as<void>;
{ T::deserialize(is) } -> std::same_as<T>;
};
// Пример сериализуемого класса
struct Person {
std::string name;
int age;
void serialize(std::ostream& os) const {
os << name << " " << age;
}
static Person deserialize(std::istream& is) {
Person p;
is >> p.name >> p.age;
return p;
}
};
// Функция для работы с сериализуемыми объектами
template<Serializable T>
void save_and_load(const T& obj) {
std::stringstream ss;
// Сериализация
obj.serialize(ss);
std::cout << "Serialized: " << ss.str() << std::endl;
// Десериализация
T loaded = T::deserialize(ss);
std::cout << "Deserialized successfully" << std::endl;
}
// Использование
void example() {
Person p{"Alice", 25};
save_and_load(p); // ✅ Работает
// save_and_load(42); // ❌ Ошибка компиляции
}
Библиотека C/C++ разработчика #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
😼 Три совета, как не выучить C++ за 21 день
💡Сотрудник из компании МойОфис делится субъективным, но честным гайдом о том, как правильно подойти к изучению
❗️ Ключевые моменты статьи:
• сначала поймите, действительно ли вам нужен C++ или это просто хайп
• лучший способ начать — курс лекций Константина Владимирова (МФТИ)
• найдите опытного ментора и активно участвуйте в комьюнити
Основной фокус — практический подход к изучению через книги (Страуструп vs C++ Primer), написание собственных проектов и постепенное углубление в специализированные области.
Особенно актуально для студентов технических вузов и тех, кто хочет перейти от учебных задачек к коммерческой разработке.
Автор честно предупреждает: изучение C++ — это не гонка, а долгое путешествие. Попытки «схватить всё и сразу» приведут только к выгоранию и разочарованию вместо уверенных знаний языка.
👉 Статья
Библиотека C/C++ разработчика
💡Сотрудник из компании МойОфис делится субъективным, но честным гайдом о том, как правильно подойти к изучению
C++
и не сгореть в процессе.❗️ Ключевые моменты статьи:
• сначала поймите, действительно ли вам нужен C++ или это просто хайп
• лучший способ начать — курс лекций Константина Владимирова (МФТИ)
• найдите опытного ментора и активно участвуйте в комьюнити
Основной фокус — практический подход к изучению через книги (Страуструп vs C++ Primer), написание собственных проектов и постепенное углубление в специализированные области.
Особенно актуально для студентов технических вузов и тех, кто хочет перейти от учебных задачек к коммерческой разработке.
Автор честно предупреждает: изучение C++ — это не гонка, а долгое путешествие. Попытки «схватить всё и сразу» приведут только к выгоранию и разочарованию вместо уверенных знаний языка.
👉 Статья
Библиотека C/C++ разработчика
🔥9❤3🥱3👍2🤩2
🌚 Стандартная библиотека C++ — это сплошные костыли и велосипеды, пора от неё избавиться?
💡 Автор статьи пошёл дальше критики и создал собственную библиотеку, которая заменяет стандартную библиотеку C++ с нуля.
❗️ Ключевые моменты библиотеки:
• замена std::tuple на альтернативу с операциями нарезки и мутации
• лучший::выбор вместо std::variant с поддержкой совмещения
• лучший::result как аналог Rust's Result<T, E> для обработки ошибок
Основной фокус — создание современной библиотеки, которая использует метапрограммирование, улучшенные контейнеры и новую парадигму итерации на основе Rust Iterator.
Особенно актуально для разработчиков, которые устали от многословности стандартных алгоритмов и хотят более элегантный API для работы с контейнерами и обработкой ошибок.
Автор доказывает, что можно создать библиотеку, которая превосходит даже Google Abseil, используя современные возможности языка и отказавшись от legacy-решений стандартной библиотеки.
👉 Статья
Библиотека C/C++ разработчика
💡 Автор статьи пошёл дальше критики и создал собственную библиотеку, которая заменяет стандартную библиотеку C++ с нуля.
❗️ Ключевые моменты библиотеки:
• замена std::tuple на альтернативу с операциями нарезки и мутации
• лучший::выбор вместо std::variant с поддержкой совмещения
• лучший::result как аналог Rust's Result<T, E> для обработки ошибок
Основной фокус — создание современной библиотеки, которая использует метапрограммирование, улучшенные контейнеры и новую парадигму итерации на основе Rust Iterator.
Особенно актуально для разработчиков, которые устали от многословности стандартных алгоритмов и хотят более элегантный API для работы с контейнерами и обработкой ошибок.
Автор доказывает, что можно создать библиотеку, которая превосходит даже Google Abseil, используя современные возможности языка и отказавшись от legacy-решений стандартной библиотеки.
👉 Статья
Библиотека C/C++ разработчика
😁9❤1🔥1