Fix map for reference types

This commit is contained in:
Simon Brand
2018-02-11 09:40:01 +00:00
parent 4bde006cb5
commit d7ec1da407

View File

@@ -1837,8 +1837,8 @@ public:
/// \group map /// \group map
/// \synopsis template <class F> auto map(F &&f) &; /// \synopsis template <class F> auto map(F &&f) &;
template <class F> template <class F>
TL_OPTIONAL_11_CONSTEXPR decltype(map_impl(std::declval<optional &>(), TL_OPTIONAL_11_CONSTEXPR decltype(detail::map_impl(std::declval<optional &>(),
std::declval<F &&>())) std::declval<F &&>()))
map(F &&f) & { map(F &&f) & {
return detail::map_impl(*this, std::forward<F>(f)); return detail::map_impl(*this, std::forward<F>(f));
} }
@@ -1846,8 +1846,8 @@ public:
/// \group map /// \group map
/// \synopsis template <class F> auto map(F &&f) &&; /// \synopsis template <class F> auto map(F &&f) &&;
template <class F> template <class F>
TL_OPTIONAL_11_CONSTEXPR decltype(map_impl(std::declval<optional &&>(), TL_OPTIONAL_11_CONSTEXPR decltype(detail::map_impl(std::declval<optional &&>(),
std::declval<F &&>())) std::declval<F &&>()))
map(F &&f) && { map(F &&f) && {
return detail::map_impl(std::move(*this), std::forward<F>(f)); return detail::map_impl(std::move(*this), std::forward<F>(f));
} }
@@ -1855,8 +1855,8 @@ public:
/// \group map /// \group map
/// \synopsis template <class F> auto map(F &&f) const&; /// \synopsis template <class F> auto map(F &&f) const&;
template <class F> template <class F>
constexpr decltype(map_impl(std::declval<const optional &>(), constexpr decltype(detail::map_impl(std::declval<const optional &>(),
std::declval<F &&>())) std::declval<F &&>()))
map(F &&f) const & { map(F &&f) const & {
return detail::map_impl(*this, std::forward<F>(f)); return detail::map_impl(*this, std::forward<F>(f));
} }
@@ -1865,8 +1865,8 @@ public:
/// \group map /// \group map
/// \synopsis template <class F> auto map(F &&f) const&&; /// \synopsis template <class F> auto map(F &&f) const&&;
template <class F> template <class F>
constexpr decltype(map_impl(std::declval<const optional &&>(), constexpr decltype(detail::map_impl(std::declval<const optional &&>(),
std::declval<F &&>())) std::declval<F &&>()))
map(F &&f) const && { map(F &&f) const && {
return detail::map_impl(std::move(*this), std::forward<F>(f)); return detail::map_impl(std::move(*this), std::forward<F>(f));
} }