start ...
This commit is contained in:
28
include/snipplib/concepts/snplib_concepts.h
Normal file
28
include/snipplib/concepts/snplib_concepts.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include <concepts>
|
||||
#include <ranges>
|
||||
|
||||
namespace snplib {
|
||||
|
||||
// type T is hashable
|
||||
template <typename T>
|
||||
concept snplib_hashable_c = requires(T t) {
|
||||
{ std::hash<T>(t) } -> std::convertible_to<size_t>;
|
||||
};
|
||||
|
||||
template <typename T, typename CharT = char>
|
||||
concept snplib_char_range_c = std::ranges::range<T> && std::same_as<std::ranges::range_value_t<T>, CharT>;
|
||||
|
||||
template <typename T, typename CharT = char>
|
||||
concept snplib_input_char_range_c = std::ranges::input_range<T> && std::same_as<std::ranges::range_value_t<T>, CharT>;
|
||||
|
||||
template <typename T, typename CharT = char>
|
||||
concept snplib_output_char_range_c = std::ranges::output_range<T, CharT>;
|
||||
|
||||
template <typename T, typename CharT = char>
|
||||
concept snplib_char_view_c = std::ranges::view<T> && std::same_as<std::ranges::range_value_t<T>, CharT>;
|
||||
|
||||
|
||||
|
||||
} // end of snplib namespace
|
||||
Reference in New Issue
Block a user