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

            Bug ID: 93793
           Summary: std::ostream_iterator doesn't satisfy
                    std::weakly_incrementable
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: cjdb.ns at gmail dot com
  Target Milestone: ---

Created attachment 47864
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47864&action=edit
Minimal repro

It appears that ostream_iterator::difference_type is still void when -std=c++2a
is enabled.

* Branch: GCC trunk

* Version: g++ (GCC) 10.0.1 20200217 (experimental)

* Git Hash: cd23cdb1743b41baed0b937c4b359b9422490ca7

* GCC configured with: ../gcc/configure --disable-nls --disable-multilib
--enable-languages=c,c++ --disable-werror

* GCC built with: CFLAGS='-O3 -g0 -w' CXXFLAGS='-O3 -g0 -w'
LDFLAGS='-fuse-ld=gold'

* System: Ubuntu 18.04 (WSL)

* GCC invocation: g++ -std=c++2a

* Output:

```
ostream_iterator.cpp:5:20: error: static assertion failed
    5 | static_assert(std::weakly_incrementable<std::ostream_iterator<int>>);
      |               ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ostream_iterator.cpp:5:20: note: constraints not satisfied
In file included from
/usr/local/include/c++/10.0.1/bits/stl_iterator_base_types.h:71,
                 from /usr/local/include/c++/10.0.1/iterator:61,
                 from ostream_iterator.cpp:2:
/usr/local/include/c++/10.0.1/bits/iterator_concepts.h:505:13:   required by
the constraints of 'template<class _Iter> concept std::weakly_incrementable'
/usr/local/include/c++/10.0.1/bits/iterator_concepts.h:507:10:   in
requirements with 'std::ostream_iterator<int> __i'
/usr/local/include/c++/10.0.1/bits/iterator_concepts.h:510:21: note: nested
requirement '__is_signed_integer_like<typename
std::__detail::__iter_traits_impl<typename std::remove_cv<typename
std::remove_reference<_Tp>::type>::type, std::incrementable_traits<typename
std::remove_cv<typename std::remove_reference<_Tp>::type>::type>
>::type::difference_type>' is not satisfied
  510 |  requires __detail::__is_signed_integer_like<iter_difference_t<_Iter>>;
      |           ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

Reply via email to