Header file range/v3/algorithm/swap_ranges.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/utility/iterator_concepts.hpp>

#include <range/v3/utility/iterator_traits.hpp>

#include <range/v3/utility/static_const.hpp>

#include <range/v3/utility/tagged_pair.hpp>

#include <range/v3/algorithm/tagspec.hpp>

namespace ranges
{
    inline namespace v3
    {
        struct swap_ranges_fn;
        
        inline namespace 
        {
            constexpr auto& swap_ranges = static_const<with_braced_init_args<swap_ranges_fn>>::value;
        }
    }
}

Class ranges::v3::swap_ranges_fn

struct swap_ranges_fn
{
    template <typename I1Ref, typename S1, typename I2, typename I1 = uncvref_t<I1Ref>, int _concept_requires_36 = 42, typename std::enable_if<(_concept_requires_36==43)||(InputIterator<I1>()&&Sentinel<S1, I1>()&&InputIterator<I2>()&&IndirectlySwappable<I1, I2>()), int>::type=0>
    tagged_pair<tag::in1(I1), tag::in2(I2)> operator()(I1, I2, I1Ref&& begin1, S1 end1, I2 begin2) const;
    
    template <typename I1, typename S1, typename I2, typename S2, int _concept_requires_47 = 42, typename std::enable_if<(_concept_requires_47==43)||(InputIterator<I1>()&&Sentinel<S1, I1>()&&InputIterator<I2>()&&Sentinel<S2, I2>()&&IndirectlySwappable<I1, I2>()), int>::type=0>
    tagged_pair<tag::in1(I1), tag::in2(I2)> operator()(I1, I2, I1 begin1, S1 end1, I2 begin2, S2 end2) const;
    
    template <typename Rng1, typename I2, typename I1 = range_iterator_t<Rng1>, int _concept_requires_59 = 42, typename std::enable_if<(_concept_requires_59==43)||(InputRange<Rng1>()&&InputIterator<I2>()&&IndirectlySwappable<I1, I2>()), int>::type=0>
    tagged_pair<tag::in1(I1), tag::in2(I2)> operator()(I1, I2, Rng1& rng1, I2 begin2) const;
    
    template <typename Rng1, typename Rng2, typename I1 = range_iterator_t<Rng1>, typename I2 = range_iterator_t<Rng2>, int _concept_requires_70 = 42, typename std::enable_if<(_concept_requires_70==43)||(InputRange<Rng1>()&&InputRange<Rng2>()&&IndirectlySwappable<I1, I2>()), int>::type=0>
    tagged_pair<tag::in1(range_safe_iterator_t<Rng1>), tag::in2(range_safe_iterator_t<Rng2>)> operator()(range_safe_iterator_t<Rng1>, range_safe_iterator_t<Rng2>, Rng1&& rng1, Rng2&& rng2) const;
};

@{


Variable ranges::v3::swap_ranges

constexpr auto& swap_ranges = static_const<with_braced_init_args<swap_ranges_fn>>::value;

swap_ranges_fn