@@ -14,6 +14,7 @@ Distributed under the Boost Software License, Version 1.0.
14
14
15
15
#include < boost/hana/basic_tuple.hpp>
16
16
#include < boost/hana/core/make.hpp>
17
+ #include < boost/hana/detail/as_container_element.hpp>
17
18
#include < boost/hana/detail/operators/adl.hpp>
18
19
#include < boost/hana/detail/operators/monad.hpp>
19
20
#include < boost/hana/functional/apply.hpp>
@@ -67,7 +68,7 @@ namespace boost { namespace hana {
67
68
template <typename ...Args>
68
69
constexpr lazy_apply_t <
69
70
std::make_index_sequence<sizeof ...(Args)>,
70
- X, typename std::decay <Args>::type ...
71
+ X, detail:: as_container_element_t <Args>...
71
72
> operator ()(Args&& ...args) const & {
72
73
return {detail::lazy_secret{},
73
74
hana::get_impl<0 >(storage_), static_cast <Args&&>(args)...};
@@ -76,7 +77,7 @@ namespace boost { namespace hana {
76
77
template <typename ...Args>
77
78
constexpr lazy_apply_t <
78
79
std::make_index_sequence<sizeof ...(Args)>,
79
- X, typename std::decay <Args>::type ...
80
+ X, detail:: as_container_element_t <Args>...
80
81
> operator ()(Args&& ...args) && {
81
82
return {detail::lazy_secret{},
82
83
static_cast <X&&>(hana::get_impl<0 >(storage_)),
@@ -91,7 +92,7 @@ namespace boost { namespace hana {
91
92
template <>
92
93
struct make_impl <lazy_tag> {
93
94
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) {
95
96
return {detail::lazy_secret{}, static_cast <X&&>(x)};
96
97
}
97
98
};
0 commit comments