10 template<
typename Con>
11 concept CustomJoin = concepts::TagInvocable<JoinFunction, Con>;
13 template<
typename Con>
14 concept ViewJoin =
requires(Con&& container) {
JoinView { util::forward<Con>(container) }; };
16 struct JoinFunction : function::pipeline::EnablePipeline {
17 template<concepts::ViewableContainer Con>
18 requires(CustomJoin<Con> || ViewJoin<Con>)
19 constexpr auto operator()(Con&& container)
const -> concepts::View
auto {
20 if constexpr (CustomJoin<Con>) {
23 return JoinView { util::forward<Con>(container) };
30constexpr inline auto join = detail::JoinFunction {};
constexpr auto join
Definition join.h:30
JoinView(Con &&) -> JoinView< meta::AsView< Con > >
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
Definition any_storable.h:9