https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92273

            Bug ID: 92273
           Summary: concepts check failed: std::vector iterator and
                    std::string iterator are not contiguous iterator.
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: euloanty at live dot com
                CC: jwakely at redhat dot com
  Target Milestone: ---

Created attachment 47127
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47127&action=edit
vector<T>::iterator contiguous_iterator concepts fail

Thank you for your hard work for concepts and ranges. However, the
std::contiguous_iterator concepts failed for checking std::vector and
std::string. I did the same on Visual C++ Preview. VC works (although vc does
not support concept auto).

cqwrteur@DESKTOP-7H7UHQ9:/mnt/d$ g++ -o a a.cc -O2 -std=c++2a -fconcepts
a.cc: In function ‘int main()’:
a.cc:11:53: error: deduced initializer does not satisfy placeholder constraints
   11 |  std::contiguous_iterator auto vec_iter(vec.cbegin());
      |                                                     ^
a.cc:11:53: note: constraints not satisfied
In file included from a.cc:1:
/usr/local/include/c++/10.0.0/concepts:67:28: note:  
‘std::contiguous_iterator_tag’ is not a base of
‘std::random_access_iterator_tag’
   67 |     concept derived_from = __is_base_of(_Base, _Derived)
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:15:53: error: deduced initializer does not satisfy placeholder constraints
   15 |  std::contiguous_iterator auto str_iter(str.cbegin());
      |                                                     ^
a.cc:15:53: note: constraints not satisfied
In file included from a.cc:1:
/usr/local/include/c++/10.0.0/concepts:67:28: note:  
‘std::contiguous_iterator_tag’ is not a base of
‘std::random_access_iterator_tag’
   67 |     concept derived_from = __is_base_of(_Base, _Derived)
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cqwrteur@DESKTOP-7H7UHQ9:/mnt/d$ gcc --version
gcc (cqwrteur) 10.0.0 20191029 (experimental)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



#include<concepts>
#include<string>
#include<string_view>
#include<iterator>
#include<vector>
#include<deque>

int main()
{
        std::vector<std::size_t> vec;
        std::contiguous_iterator auto vec_iter(vec.cbegin());
        std::string_view sv;
        std::contiguous_iterator auto sv_iter(sv.cbegin());
        std::string str;
        std::contiguous_iterator auto str_iter(str.cbegin());
        std::deque<std::size_t> dq;
        std::random_access_iterator auto dq_iter(dq.cbegin());
        static_assert(!std::contiguous_iterator<decltype(dq_iter)>,"deque
iterator should not be a contiguous_iterator");
}

Reply via email to