79 RANGES_NO_UNIQUE_ADDRESS
81 RANGES_NO_UNIQUE_ADDRESS
84 template<
typename Qual>
85 using _result_first = detail::_bind_front<meta::invoke<Qual, First>>;
86 template<
typename Qual>
89 template<
typename... Args>
91 ::template _result_t<Qual, Args...>;
94 template<
typename Qual,
typename... Args>
100 _result_second<Qual>>,
105 constexpr overloaded(First first, Rest... rest)
106 : first_(
static_cast<First &&
>(first))
107 , second_{
static_cast<Rest &&
>(rest)...}
110 template(
typename... Args)(
112 constexpr _result_t<detail::_id, Args...> operator()(Args &&... args) &&
114 return invoke((First &&) first_, (Args &&) args...);
116 template(
typename... Args)(
119 constexpr _result_t<detail::_id, Args...>
operator()(Args &&... args) &&
124 template(
typename... Args)(
126 constexpr _result_t<detail::_ref, Args...> operator()(Args &&... args) &
128 return invoke(first_, (Args &&) args...);
130 template(
typename... Args)(
133 constexpr _result_t<detail::_ref, Args...>
operator()(Args &&... args) &
135 return invoke(second_, (Args &&) args...);
138 template(
typename... Args)(
140 constexpr _result_t<detail::_cref, Args...> operator()(Args &&... args)
const &
142 return invoke(first_, (Args &&) args...);
144 template(
typename... Args)(
147 constexpr _result_t<detail::_cref, Args...>
operator()(Args &&... args)
const &
149 return invoke(second_, (Args &&) args...);
typename detail::_cond< If >::template invoke< Then, Else > conditional_t
Select one type or another depending on a compile-time Boolean.
Definition meta.hpp:1148