11 struct WriteSomeMember {
13 constexpr auto operator()(T& writer, Span<Byte const>
data)
const ->
Result<usize>
15 { writer.write_some(
data) } -> concepts::ImplicitlyConvertibleTo<Result<usize>>;
18 return writer.write_some(
data);
24 { (*this)(writer.get(),
data) };
27 return (*
this)(writer.get(),
data);
33 constexpr auto operator()(T& writer)
const ->
Result<void>
35 { writer.flush() } -> concepts::ImplicitlyConvertibleTo<Result<void>>;
38 return writer.flush();
44 { (*this)(writer.get()) };
47 return (*
this)(writer.get());
51 struct InteractiveDeviceMember {
53 constexpr auto operator()(T& writer)
const ->
bool
55 { writer.interactive_device() } -> concepts::ImplicitlyConvertibleTo<bool>;
58 return writer.interactive_device();
64 { (*this)(writer.get()) };
67 return (*
this)(writer.get());
71 struct InteractiveDeviceDefault {
72 constexpr auto operator()(
auto&) const ->
bool {
return false; }
76struct WriteSome :
Dispatcher<WriteSome, Result<usize>(This&, Span<Byte const>), detail::WriteSomeMember> {};
79 :
Dispatcher<InteractiveDevice, bool(This&), detail::InteractiveDeviceMember, detail::InteractiveDeviceDefault> {};
89template<
typename T, concepts::Impl<io::Writer> Writer>
detail::DispatcherImpl< Self, Sig, Tags... > Dispatcher
Definition dispatcher.h:47
constexpr auto flush
Definition writer.h:82
constexpr auto interactive_device
Definition writer.h:83
meta::List< WriteSome, Flush, InteractiveDevice > Writer
Definition writer.h:85
constexpr auto write_some
Definition writer.h:81
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
ReferenceWrapper(T &) -> ReferenceWrapper< T >
Expected< T, Error > Result
Definition result.h:8
Definition any_storable.h:9
constexpr auto data
Definition data.h:51