18 concept ArrayBegin = concepts::LanguageArray<meta::RemoveReference<T>>;
21 concept CustomBegin = concepts::TagInvocable<BeginFunction, T> &&
22 concepts::Iterator<meta::Decay<meta::TagInvokeResult<BeginFunction, T>>>;
25 concept MemberBegin =
requires(T&& container) {
26 { util::forward<T>(container).begin() } -> concepts::Iterator;
33 (detail::ArrayBegin<T> || detail::CustomBegin<T> || detail::MemberBegin<T>) )
35 if constexpr (detail::ArrayBegin<T>) {
37 }
else if constexpr (detail::CustomBegin<T>) {
41#pragma clang diagnostic push
42#pragma clang diagnostic ignored "-Wunused-result"
44 return util::forward<T>(
container).begin();
46#pragma clang diagnostic pop
constexpr struct di::container::EnableBorrowedContainer enable_borrowed_container
constexpr auto begin
Definition begin.h:52
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
constexpr auto in_place_type
Definition in_place_type.h:12
Definition any_storable.h:9
constexpr auto operator()(T &&container) const
Definition begin.h:34