Each of the class templates specified in this subclause
has the template parameters, data members, and special members specified below,
and has no base classes or members other than those specified.
namespace std::ranges {template<class I, class F>structin_fun_result{[[no_unique_address]] I in;
[[no_unique_address]] F fun;
template<class I2, class F2>requiresconvertible_to<const I&, I2>&&convertible_to<const F&, F2>constexproperator in_fun_result<I2, F2>()const&{return{in, fun};
}template<class I2, class F2>requiresconvertible_to<I, I2>&&convertible_to<F, F2>constexproperator in_fun_result<I2, F2>()&&{return{std::move(in), std::move(fun)};
}};
template<class I1, class I2>structin_in_result{[[no_unique_address]] I1 in1;
[[no_unique_address]] I2 in2;
template<class II1, class II2>requiresconvertible_to<const I1&, II1>&&convertible_to<const I2&, II2>constexproperator in_in_result<II1, II2>()const&{return{in1, in2};
}template<class II1, class II2>requiresconvertible_to<I1, II1>&&convertible_to<I2, II2>constexproperator in_in_result<II1, II2>()&&{return{std::move(in1), std::move(in2)};
}};
template<class I, class O>structin_out_result{[[no_unique_address]] I in;
[[no_unique_address]] O out;
template<class I2, class O2>requiresconvertible_to<const I&, I2>&&convertible_to<const O&, O2>constexproperator in_out_result<I2, O2>()const&{return{in, out};
}template<class I2, class O2>requiresconvertible_to<I, I2>&&convertible_to<O, O2>constexproperator in_out_result<I2, O2>()&&{return{std::move(in), std::move(out)};
}};
template<class I1, class I2, class O>structin_in_out_result{[[no_unique_address]] I1 in1;
[[no_unique_address]] I2 in2;
[[no_unique_address]] O out;
template<class II1, class II2, class OO>requiresconvertible_to<const I1&, II1>&&convertible_to<const I2&, II2>&&convertible_to<const O&, OO>constexproperator in_in_out_result<II1, II2, OO>()const&{return{in1, in2, out};
}template<class II1, class II2, class OO>requiresconvertible_to<I1, II1>&&convertible_to<I2, II2>&&convertible_to<O, OO>constexproperator in_in_out_result<II1, II2, OO>()&&{return{std::move(in1), std::move(in2), std::move(out)};
}};
template<class I, class O1, class O2>structin_out_out_result{[[no_unique_address]] I in;
[[no_unique_address]] O1 out1;
[[no_unique_address]] O2 out2;
template<class II, class OO1, class OO2>requiresconvertible_to<const I&, II>&&convertible_to<const O1&, OO1>&&convertible_to<const O2&, OO2>constexproperator in_out_out_result<II, OO1, OO2>()const&{return{in, out1, out2};
}template<class II, class OO1, class OO2>requiresconvertible_to<I, II>&&convertible_to<O1, OO1>&&convertible_to<O2, OO2>constexproperator in_out_out_result<II, OO1, OO2>()&&{return{std::move(in), std::move(out1), std::move(out2)};
}};
template<class T>structmin_max_result{[[no_unique_address]] T min;
[[no_unique_address]] T max;
template<class T2>requiresconvertible_to<const T&, T2>constexproperator min_max_result<T2>()const&{return{min, max};
}template<class T2>requiresconvertible_to<T, T2>constexproperator min_max_result<T2>()&&{return{std::move(min), std::move(max)};
}};
template<class I>structin_found_result{[[no_unique_address]] I in;
boolfound;
template<class I2>requiresconvertible_to<const I&, I2>constexproperator in_found_result<I2>()const&{return{in, found};
}template<class I2>requiresconvertible_to<I, I2>constexproperator in_found_result<I2>()&&{return{std::move(in), found};
}};
template<class I, class T>structin_value_result{[[no_unique_address]] I in;
[[no_unique_address]] T value;
template<class I2, class T2>requiresconvertible_to<const I&, I2>&&convertible_to<const T&, T2>constexproperator in_value_result<I2, T2>()const&{return{in, value};
}template<class I2, class T2>requiresconvertible_to<I, I2>&&convertible_to<T, T2>constexproperator in_value_result<I2, T2>()&&{return{std::move(in), std::move(value)};
}};
template<class O, class T>structout_value_result{[[no_unique_address]] O out;
[[no_unique_address]] T value;
template<class O2, class T2>requiresconvertible_to<const O&, O2>&&convertible_to<const T&, T2>constexproperator out_value_result<O2, T2>()const&{return{out, value};
}template<class O2, class T2>requiresconvertible_to<O, O2>&&convertible_to<T, T2>constexproperator out_value_result<O2, T2>()&&{return{std::move(out), std::move(value)};
}};
}