@@ -14,6 +14,7 @@ Distributed under the Boost Software License, Version 1.0.
1414
1515#include < boost/hana/basic_tuple.hpp>
1616#include < boost/hana/core/make.hpp>
17+ #include < boost/hana/detail/as_container_element.hpp>
1718#include < boost/hana/detail/operators/adl.hpp>
1819#include < boost/hana/detail/operators/monad.hpp>
1920#include < boost/hana/functional/apply.hpp>
@@ -67,7 +68,7 @@ namespace boost { namespace hana {
6768 template <typename ...Args>
6869 constexpr lazy_apply_t <
6970 std::make_index_sequence<sizeof ...(Args)>,
70- X, typename std::decay <Args>::type ...
71+ X, detail:: as_container_element_t <Args>...
7172 > operator ()(Args&& ...args) const & {
7273 return {detail::lazy_secret{},
7374 hana::get_impl<0 >(storage_), static_cast <Args&&>(args)...};
@@ -76,7 +77,7 @@ namespace boost { namespace hana {
7677 template <typename ...Args>
7778 constexpr lazy_apply_t <
7879 std::make_index_sequence<sizeof ...(Args)>,
79- X, typename std::decay <Args>::type ...
80+ X, detail:: as_container_element_t <Args>...
8081 > operator ()(Args&& ...args) && {
8182 return {detail::lazy_secret{},
8283 static_cast <X&&>(hana::get_impl<0 >(storage_)),
@@ -91,7 +92,7 @@ namespace boost { namespace hana {
9192 template <>
9293 struct make_impl <lazy_tag> {
9394 template <typename X>
94- static constexpr lazy_value_t <typename std::decay <X>::type > apply (X&& x) {
95+ static constexpr lazy_value_t <detail:: as_container_element_t <X>> apply (X&& x) {
9596 return {detail::lazy_secret{}, static_cast <X&&>(x)};
9697 }
9798 };
0 commit comments