#pragma once #include #include #include #include #include namespace hack::concepts { template concept is_sequence_container = std::same_as> || std::same_as>; template concept is_tuple = requires (T t) { std::tuple_cat(t, std::make_tuple(1, "tuple")); }; template concept is_string = std::is_convertible_v; template concept is_map = std::same_as> || std::same_as>; template concept not_defined = !std::enable_if_t || is_sequence_container || is_map || is_tuple || is_string), bool>() == true; }