#pragma once #include template struct Column { Column(T default_value): value{default_value} {} Column(): value{} {} using real_type = T; T value{}; }; struct Id: Column { static constexpr std::size_t unset_value = static_cast(-1); static constexpr auto name = "id_"; static constexpr auto options = "PRIMARY KEY"; Id(): Column(unset_value) {} };