/
spirzen
/
it-code-examples
Обзор
Документация
Войти
/
spirzen
/
it-code-examples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
examples/cpp/cpp-506-11-045/main.cpp
19 строк
767 B
Spirzen
Code migration pack
09 июн 2026, 01:41
09 июн 2026, 01:41
cebc284
Код
Авторство
О чём код?
// Вспомогательный trait: имеет ли T метод void serialize() const? template<typename T, typename = void> struct has_serialize : std::false_type {}; template<typename T> struct has_serialize<T, std::void_t<decltype(std::declval<const T&>().serialize())>> : std::true_type {}; // Перегрузки: template<typename T> std::enable_if_t<has_serialize_v<T>> save(const T& obj) { obj.serialize(); // безопасно — перегрузка доступна только если serialize существует } template<typename T> std::enable_if_t<!has_serialize_v<T>> save(const T& obj) { // fallback: например, бинарная запись write_bytes(reinterpret_cast<const char*>(&obj), sizeof(obj)); }