#pragma once #include #include namespace snplib { // type T is hashable template concept snplib_hashable_c = requires(T t) { { std::hash{}(t) } -> std::convertible_to; }; template concept snplib_char_range_c = std::ranges::range && std::same_as, CharT>; template concept snplib_input_char_range_c = std::ranges::input_range && std::same_as, CharT>; template concept snplib_output_char_range_c = std::ranges::output_range; template concept snplib_char_view_c = std::ranges::view && std::same_as, CharT>; } // namespace snplib