diff options
author | Kirk Shoop <kirk.shoop@microsoft.com> | 2014-03-20 07:59:42 -0700 |
---|---|---|
committer | Kirk Shoop <kirk.shoop@microsoft.com> | 2014-03-20 07:59:42 -0700 |
commit | c1d02264d81b361aa131b3a6a9a4dc0b71b70ab8 (patch) | |
tree | 39dd72643bd23f0fdf65334b6f678def38162669 /Rx/v2/src/rxcpp/rx-observer.hpp | |
parent | 3ce422e73b636d17a9189b0096cbb15821a29f8e (diff) | |
download | RxCpp-c1d02264d81b361aa131b3a6a9a4dc0b71b70ab8.tar.gz |
add variadic versions of make_...
Diffstat (limited to 'Rx/v2/src/rxcpp/rx-observer.hpp')
-rw-r--r-- | Rx/v2/src/rxcpp/rx-observer.hpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/Rx/v2/src/rxcpp/rx-observer.hpp b/Rx/v2/src/rxcpp/rx-observer.hpp index f3e5181..6f3650c 100644 --- a/Rx/v2/src/rxcpp/rx-observer.hpp +++ b/Rx/v2/src/rxcpp/rx-observer.hpp @@ -446,6 +446,13 @@ struct tag_observer_set } +#if RXCPP_USE_VARIADIC_TEMPLATES +template<class T, class Arg0, class... ArgN> +auto make_observer(Arg0&& a0, ArgN&&... an) + -> decltype(detail::make_observer_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<ArgN>(an)...))) { + return detail::make_observer_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<ArgN>(an)...)); +} +#else template<class T, class Arg0> auto make_observer(Arg0&& a0) -> decltype(detail::make_observer_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0)))) { @@ -466,7 +473,15 @@ auto make_observer(Arg0&& a0, Arg1&& a1, Arg2&& a2, Arg3&& a3) -> decltype(detail::make_observer_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<Arg1>(a1), std::forward<Arg2>(a2), std::forward<Arg3>(a3)))) { return detail::make_observer_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<Arg1>(a1), std::forward<Arg2>(a2), std::forward<Arg3>(a3))); } +#endif +#if RXCPP_USE_VARIADIC_TEMPLATES +template<class T, class Arg0, class... ArgN> +auto make_observer_dynamic(Arg0&& a0, ArgN&&... an) + -> decltype(detail::make_observer_dynamic_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<ArgN>(an)...))) { + return detail::make_observer_dynamic_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<ArgN>(an)...)); +} +#else template<class T, class Arg0> auto make_observer_dynamic(Arg0&& a0) -> decltype(detail::make_observer_dynamic_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0)))) { @@ -487,6 +502,7 @@ auto make_observer_dynamic(Arg0&& a0, Arg1&& a1, Arg2&& a2, Arg3&& a3) -> decltype(detail::make_observer_dynamic_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<Arg1>(a1), std::forward<Arg2>(a2), std::forward<Arg3>(a3)))) { return detail::make_observer_dynamic_resolved<T>(rxu::detail::resolve_arg_set(detail::tag_observer_set<T>(), std::forward<Arg0>(a0), std::forward<Arg1>(a1), std::forward<Arg2>(a2), std::forward<Arg3>(a3))); } +#endif } |