diff --git a/Incubator.cpp b/Incubator.cpp index 8de093e..b98c837 100644 --- a/Incubator.cpp +++ b/Incubator.cpp @@ -610,6 +610,10 @@ void some_examples() { }) .then([] + { + return CastSpellPromise(3837); + }) + .then([] { }); diff --git a/include/Continuable.h b/include/Continuable.h index 87a7430..e7166fe 100644 --- a/include/Continuable.h +++ b/include/Continuable.h @@ -82,7 +82,7 @@ private: } } - /// Internal onstructor for continuation + /// Internal constructor for continuation template Continuable(_FTy&& callback_insert, Continuable<_RATy...>&& right) : _callback_insert(std::forward<_FTy>(callback_insert)), _released(right._released) @@ -133,10 +133,6 @@ public: auto then(_CTy&& functional) -> typename detail::continuable_unwrap<_CTy, _ATy...>::continuable_t { - /*static_assert(std::is_same, - typename detail::continuable_unwrap<_CTy, _ATy...>::arguments_t>::value, - "Given function signature isn't correct, for now it must match strictly!");*/ - ForwardFunction&& callback = std::move(_callback_insert); auto&& corrected = detail::continuable_corrector<_ATy...>::correct(std::forward<_CTy>(functional)); @@ -342,10 +338,9 @@ namespace detail template static inline auto partial_signature_corrector(_CTy&& functional) - -> _CTy// decltype(correctors::partial_signature_corrector<_ATy...>::correct(std::declval<_CTy>())) + -> decltype(correctors::partial_signature_corrector<_ATy...>::correct(std::declval<_CTy>())) { - // return correctors::partial_signature_corrector<_ATy...>::correct(std::forward<_CTy>(functional)); - return std::forward<_CTy>(functional); + return correctors::partial_signature_corrector<_ATy...>::correct(std::forward<_CTy>(functional)); } /// Wrap Continuables into the continuable returning functional type.