...
This commit is contained in:
@@ -7,6 +7,18 @@
|
||||
namespace mcc::traits
|
||||
{
|
||||
|
||||
|
||||
template <std::ranges::range R>
|
||||
static constexpr size_t mcc_range_size(const R& r)
|
||||
{
|
||||
if constexpr (std::ranges::sized_range<R>) {
|
||||
return r.size();
|
||||
} else {
|
||||
return std::ranges::distance(r.begin(), r.end());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template <typename R>
|
||||
concept mcc_char_view = std::ranges::view<R> && std::same_as<std::ranges::range_value_t<R>, char>;
|
||||
|
||||
@@ -59,6 +71,16 @@ concept mcc_systime_c = requires {
|
||||
};
|
||||
|
||||
|
||||
template <typename R>
|
||||
concept mcc_output_duration_range_c =
|
||||
std::ranges::output_range<R, std::ranges::range_value_t<R>> && mcc_time_duration_c<std::ranges::range_value_t<R>>;
|
||||
// concept mcc_output_duration_range_c = std::ranges::range<R> && requires(R r) {
|
||||
// []<class Rep, class Period>(std::type_identity<std::chrono::duration<Rep, Period>>) {
|
||||
|
||||
// }(std::ranges::range_value_t<R>());
|
||||
|
||||
// };
|
||||
|
||||
/* a callable concept and its signature traits */
|
||||
|
||||
template <typename T>
|
||||
|
||||
Reference in New Issue
Block a user