std::experimental::ranges::IndirectlySwappable

< cpp‎ | experimental‎ | ranges
template <class I1, class I2 = I1>

concept bool IndirectlySwappable =
  ranges::Readable<I1> && ranges::Readable<I2> &&
  requires(I1&& i1, I2&& i2) {
    ranges::iter_swap(std::forward<I1>(i1), std::forward<I2>(i2));
    ranges::iter_swap(std::forward<I2>(i2), std::forward<I1>(i1));
    ranges::iter_swap(std::forward<I1>(i1), std::forward<I1>(i1));
    ranges::iter_swap(std::forward<I2>(i2), std::forward<I2>(i2));

  };
(范围 TS)