A RetroSearch Logo

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

Search Query:

Showing content from https://en.cppreference.com/w/cpp/iterator/basic_const_iterator/operator_constant_iterator.html below:

std::basic_const_iterator<Iter>::operator constant-iterator - cppreference.com

template< /*not-a-const-iterator*/ CI >

  requires /*constant-iterator*/<CI> &&
      std::convertible_to<Iter const&, CI>

constexpr operator CI() const &;
(1) (since C++23) template< /*not-a-const-iterator*/ CI >

  requires /*constant-iterator*/<CI> &&
      std::convertible_to<Iter, CI>

constexpr operator CI() &&;
(2) (since C++23)

Returns the converted constant iterator to which an underlying iterator current can be explicitly or implicitly convertible.

CI satisfies the exposition-only concept /*not-a-const-iterator*/ if and only if it's not a specialization of basic_const_iterator.

[edit] Return value

1) current

2) std::move(current)

[edit] Example
#include <iterator>
#include <ranges>
#include <vector>
 
void foo(std::vector<int>::const_iterator) {}
 
int main()
{
    auto v = std::vector<int>();
    {
        // ranges::cbegin below returns vector<int>::const_iterator
        auto i1 = std::ranges::cbegin(v);
        foo(i1); // okay
    }
 
    auto t = v | std::views::take_while([](int const x) { return x < 100; });
    {
        // ranges::cbegin below returns basic_const_iterator<vector<int>::iterator>
        auto i2 = std::ranges::cbegin(t);
        foo(i2); // error until P2836R1
    }
}
[edit] Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior P2836R1 C++23 basic_const_iterator doesn't follow its underlying type's convertibility conversion operator provided

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