24 template<
typename Out,
typename Con,
typename... Args>
25 concept DirectConstructSequenceTo = concepts::CreatableFrom<Out, Con, Args...>;
27 template<
typename Out,
typename Con,
typename... Args>
28 concept TagConstructSequenceTo = concepts::CreatableFrom<Out, FromContainer, Con, Args...>;
33 { t.capacity() } -> concepts::SameAs<meta::ContainerSizeType<T>>;
34 { t.max_size() } -> concepts::SameAs<meta::ContainerSizeType<T>>;
37 template<
typename Out,
typename T>
38 constexpr auto do_insert(Out& output, T&& value) {
39 if constexpr (
requires { output.push_back(di::forward<T>(value)); }) {
40 return output.push_back(di::forward<T>(value));
42 return output.insert(output.end(), di::forward<T>(value));
47template<
typename Out, concepts::InputContainer Con,
typename... Args>
48requires(!concepts::View<Out> && concepts::Expected<meta::ContainerValue<Con>>)
50 if constexpr (detail::DirectConstructSequenceTo<Out, Con, Args...>) {
52 }
else if constexpr (detail::TagConstructSequenceTo<Out, Con, Args...>) {
61 auto output = Out(di::forward<Args>(args)...);
69 return Unexpected(di::forward<
decltype(value)>(value).error());
71 detail::do_insert(output, di::forward<
decltype(value)>(value).value());
78 auto output = Out(di::forward<Args>(args)...);
86 return Unexpected(di::forward<
decltype(value)>(value).error());
88 DI_TRY(detail::do_insert(output, di::forward<
decltype(value)>(value).value()));
97 typename UnwrappedContainer = EmptyView<meta::ExpectedValue<meta::ContainerValue<Con>>>>
110template<
typename Out,
typename... Args>
117 util::forward<Args>(args)...);
120template<
template<
typename...>
typename Template,
typename... Args>
126 util::forward<Args>(args)...);
Definition expected_forward_declaration.h:8
Definition unexpected.h:14
Definition deduce_create.h:30
Definition sized_container.h:8
#define DI_TRY(...)
Definition monad_try.h:13
constexpr auto sequence_to(Con &&container, Args &&... args)
Definition sequence_to.h:49
constexpr auto size
Definition size.h:62
constexpr auto bind_back(F &&f, Args &&... args)
Definition bind_back.h:68
constexpr auto create(Args &&... args)
Definition create.h:21
StatusCode< Erased< long > > Error
Definition error.h:8
Definition any_storable.h:9
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto from_container
Definition from_container.h:6
Definition from_container.h:4