#include "dbTypes.h" #include // Required else this write::operator() is always recursive namespace std { struct write { template std::ostream & operator()(const T & v) const { return strm << v; } std::ostream & strm; }; std::ostream & operator<<(std::ostream & strm, const MyGrate::DbValueV & v) { return std::visit(write {strm}, v); } } static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_copy_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v); static_assert(std::is_move_assignable_v);