This commit is contained in:
Timur A. Fatkhullin
2025-08-21 03:47:53 +03:00
parent 99a28d87ec
commit 33002f1711
8 changed files with 469 additions and 19 deletions

View File

@@ -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>