diff --git a/include/continuable/detail/composition-all.hpp b/include/continuable/detail/composition-all.hpp index 91e466c..3159411 100644 --- a/include/continuable/detail/composition-all.hpp +++ b/include/continuable/detail/composition-all.hpp @@ -145,6 +145,11 @@ struct continuable_dispatcher { }; } // namespace all +struct composition_strategy_all_tag {}; +template <> +struct is_composition_strategy // ... + : std::true_type {}; + /// Finalizes the all logic of a given composition template <> struct composition_finalizer { diff --git a/include/continuable/detail/composition-any.hpp b/include/continuable/detail/composition-any.hpp index 7eb8570..0472e81 100644 --- a/include/continuable/detail/composition-any.hpp +++ b/include/continuable/detail/composition-any.hpp @@ -160,6 +160,11 @@ struct continuable_dispatcher { }; } // namespace any +struct composition_strategy_any_tag {}; +template <> +struct is_composition_strategy // ... + : std::true_type {}; + /// Finalizes the any logic of a given composition template <> struct composition_finalizer { diff --git a/include/continuable/detail/composition-seq.hpp b/include/continuable/detail/composition-seq.hpp index adc4573..a9cb60e 100644 --- a/include/continuable/detail/composition-seq.hpp +++ b/include/continuable/detail/composition-seq.hpp @@ -126,6 +126,11 @@ public: }; } // namespace seq +struct composition_strategy_seq_tag {}; +template <> +struct is_composition_strategy // ... + : std::true_type {}; + /// Finalizes the seq logic of a given composition template <> struct composition_finalizer { diff --git a/include/continuable/detail/composition.hpp b/include/continuable/detail/composition.hpp index be55c5a..75adb14 100644 --- a/include/continuable/detail/composition.hpp +++ b/include/continuable/detail/composition.hpp @@ -47,22 +47,9 @@ namespace detail { /// The namespace `composition` offers methods to chain continuations together /// with `all`, `any` or `seq` logic. namespace composition { -struct composition_strategy_all_tag {}; -struct composition_strategy_any_tag {}; -struct composition_strategy_seq_tag {}; - -template + template struct is_composition_strategy // ... : std::false_type {}; -template <> -struct is_composition_strategy // ... - : std::true_type {}; -template <> -struct is_composition_strategy // ... - : std::true_type {}; -template <> -struct is_composition_strategy // ... - : std::true_type {}; /// Adds the given continuation tuple to the left composition template