A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cplusplus.github.io/LWG/issue3169 below:

ranges permutation generators discard useful information

  // 26.8.13 [alg.permutation.generators], permutations
  template<class BidirectionalIterator>
    constexpr bool next_permutation(BidirectionalIterator first,
                                    BidirectionalIterator last);
  template<class BidirectionalIterator, class Compare>
    constexpr bool next_permutation(BidirectionalIterator first,
                                    BidirectionalIterator last, Compare comp);

  namespace ranges {
    template<class I>
    struct next_permutation_result {
      bool found;
      I in;
    };

    template<BidirectionalIterator I, Sentinel<I> S, class Comp = ranges::less<>,
             class Proj = identity>
      requires Sortable<I, Comp, Proj>
      constexpr boolnext_permutation_result<I>
        next_permutation(I first, S last, Comp comp = {}, Proj proj = {});
    template<BidirectionalRange R, class Comp = ranges::less<>,
             class Proj = identity>
      requires Sortable<iterator_t<R>, Comp, Proj>
      constexpr boolnext_permutation_result<safe_iterator_t<R>>
        next_permutation(R&& r, Comp comp = {}, Proj proj = {});
  }

  template<class BidirectionalIterator>
    constexpr bool prev_permutation(BidirectionalIterator first,
                                    BidirectionalIterator last);
  template<class BidirectionalIterator, class Compare>
    constexpr bool prev_permutation(BidirectionalIterator first,
                                    BidirectionalIterator last, Compare comp);

  namespace ranges {
    template<class I>
    using prev_permutation_result = next_permutation_result<I>;

    template<BidirectionalIterator I, Sentinel<I> S, class Comp = ranges::less<>,
             class Proj = identity>
      requires Sortable<I, Comp, Proj>
      constexpr boolprev_permutation_result<I>
        prev_permutation(I first, S last, Comp comp = {}, Proj proj = {});
    template<BidirectionalRange R, class Comp = ranges::less<>,
             class Proj = identity>
      requires Sortable<iterator_t<R>, Comp, Proj>
      constexpr boolprev_permutation_result<safe_iterator_t<R>>
        prev_permutation(R&& r, Comp comp = {}, Proj proj = {});
  }
}

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4