finish correct

This commit is contained in:
Denis Blank 2015-06-22 15:09:47 +02:00 committed by Naios
parent 4aff0684fb
commit 65fc107137
2 changed files with 10 additions and 4 deletions

View File

@ -432,10 +432,14 @@ namespace detail
return std::forward<_CTy>(continuable); return std::forward<_CTy>(continuable);
} }
/// Correct user given continuable functionals.
/// Converts plan continuables to continuable retuning functions.
/// Converts void return to empty continuable.
template<typename _CTy> template<typename _CTy>
static int correct(_CTy&&) static auto correct(_CTy&& functional)
-> decltype(remove_void_trait(box_continuable_trait(std::declval<_CTy>())))
{ {
return 1; return remove_void_trait(box_continuable_trait(std::forward<_CTy>(functional)));
} }
}; };

View File

@ -236,11 +236,11 @@ int main(int /*argc*/, char** /*argv*/)
}); });
*/ */
auto test1 = detail::functional_traits<>::remove_void_trait([] auto test1 = detail::functional_traits<>::correct([]
{ {
}); });
auto test2 = detail::functional_traits<>::remove_void_trait([] auto test2 = detail::functional_traits<>::correct([]
{ {
return make_continuable([](Callback<int, int>&& callback) return make_continuable([](Callback<int, int>&& callback)
{ {
@ -249,6 +249,8 @@ int main(int /*argc*/, char** /*argv*/)
}); });
}); });
auto test3 = detail::functional_traits<>::correct(make_continuable());
std::cout << "ok" << std::endl; std::cout << "ok" << std::endl;
return 0; return 0;
} }