19 concept CustomData = concepts::TagInvocableTo<DataFunction, meta::AddPointer<meta::ContainerReference<T>>, T>;
22 concept MemberData =
requires(T&& container) {
24 util::forward<T>(container).data()
25 } -> concepts::ImplicitlyConvertibleTo<meta::AddPointer<meta::ContainerReference<T>>>;
29 concept BeginData = concepts::ContiguousIterator<meta::ContainerIterator<T>> &&
requires(T&& container) {
32 } -> concepts::ImplicitlyConvertibleTo<meta::AddPointer<meta::ContainerReference<T>>>;
39 (detail::CustomData<T> || detail::MemberData<T> || detail::BeginData<T>) )
41 if constexpr (detail::CustomData<T>) {
43 }
else if constexpr (detail::MemberData<T>) {
44 return util::forward<T>(
container).data();
constexpr struct di::container::EnableBorrowedContainer enable_borrowed_container
constexpr auto data
Definition data.h:51
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
constexpr auto to_address
Definition to_address.h:22
Definition any_storable.h:9
constexpr auto operator()(T &&container) const -> meta::AddPointer< meta::ContainerReference< T > >
Definition data.h:40