22 concept ArraySize = concepts::BoundedLanguageArray<meta::RemoveReference<T>>;
25 concept CustomSize = concepts::TagInvocableTo<SizeFunction, meta::IteratorSizeType<meta::ContainerIterator<T>>, T>;
28 concept MemberSize =
requires(T&& container) {
30 util::forward<T>(container).size()
31 } -> concepts::ImplicitlyConvertibleTo<meta::IteratorSizeType<meta::ContainerIterator<T>>>;
35 concept IteratorSize = concepts::ForwardIterator<meta::ContainerIterator<T>> &&
41 requires(detail::ArraySize<T> || detail::CustomSize<T> || detail::MemberSize<T> || detail::IteratorSize<T>)
43 if constexpr (detail::ArraySize<T>) {
45 }
else if constexpr (detail::CustomSize<T>) {
47 }
else if constexpr (detail::MemberSize<T>) {
49#pragma clang diagnostic push
50#pragma clang diagnostic ignored "-Wunused-result"
52 return util::forward<T>(
container).size();
54#pragma clang diagnostic pop
constexpr auto size
Definition size.h:62
constexpr auto end
Definition end.h:55
constexpr auto begin
Definition begin.h:52
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition any_storable.h:9