diff --git a/include/Continuable.h b/include/Continuable.h index 1c84c97..ee69d16 100644 --- a/include/Continuable.h +++ b/include/Continuable.h @@ -95,19 +95,24 @@ namespace detail typedef typename result_t::CallbackFunction callback_t; }; - // Void returning functionals + /// Wrap void returning functionals to returns an empty continuable. template - auto remove_void(_CTy&& functional) - -> typename std::enable_if::type>::value, - typename convert_void_to_continuable::type>::type>::type + auto remove_void_trait(_CTy&& functional) + -> typename std::enable_if::type>>::value, + int>::type { + return 1; } - // Non void returning functionals (route through) + /// Route continuable returning functionals through. template - auto remove_void(_CTy&& functional) - -> typename std::enable_if::type>::value, _CTy>::type + auto remove_void_trait(_CTy&& functional) + -> typename std::enable_if::type>>::value, + _CTy&&>::type { + return std::forward<_CTy>(functional); } template