public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libstdc++/100243] New: [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'}
@ 2021-04-24  1:46 nok.raven at gmail dot com
  2021-04-26  7:22 ` [Bug libstdc++/100243] " rguenth at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: nok.raven at gmail dot com @ 2021-04-24  1:46 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 100243
           Summary: [10 Regression] invalid use of incomplete type
                    'std::__detail::__iter_traits<T,
                    std::indirectly_readable_traits<T> >' {aka 'struct
                    std::indirectly_readable_traits<T>'}
           Product: gcc
           Version: 10.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: nok.raven at gmail dot com
  Target Milestone: ---

// g++-10 -std=c++2a
#include <boost/unordered/unordered_set.hpp>
#include <iterator>

int main()
{
    boost::unordered_multiset<std::string> a, b;
    b.insert(std::make_move_iterator(a.begin()),
std::make_move_iterator(b.begin()));
}


```
In file included from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_iterator_base_types.h:71,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_algobase.h:65,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/array:40,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/tuple:39,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/functional:54,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/container_hash/hash.hpp:20,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/functional/hash.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:18,
                 from <source>:1:
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:
In substitution of 'template<class _Tp> using __iter_value_t = typename
std::__detail::__iter_traits_impl<_Tp, std::indirectly_readable_traits<_Iter>
>::type::value_type [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]':
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:259:11:
  required by substitution of 'template<class _Tp> using iter_value_t =
std::__detail::__iter_value_t<typename std::remove_cv<typename
std::remove_reference<_Tp>::type>::type> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_iterator.h:1301:13:
  required from 'class
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'
<source>:7:47:   required from here
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:254:13:
error: ambiguous template instantiation for 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'
  254 |       using __iter_value_t = typename
      |             ^~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:242:12:
note: candidates are: 'template<class _Tp>  requires requires{typename
_Tp::value_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
  242 |     struct indirectly_readable_traits<_Tp>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:247:12:
note:                 'template<class _Tp>  requires requires{typename
_Tp::element_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
  247 |     struct indirectly_readable_traits<_Tp>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:254:13:
error: invalid use of incomplete type
'std::__detail::__iter_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >,
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >' {aka 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'}
  254 |       using __iter_value_t = typename
      |             ^~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:225:29:
note: declaration of
'std::__detail::__iter_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >,
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >' {aka 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'}
  225 |   template<typename> struct indirectly_readable_traits { };
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/set.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:20,
                 from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:273:14:
  required from 'struct
boost::unordered::detail::disable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::disable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:260:14:
error: no type named 'iterator_category' in 'struct
std::iterator_traits<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  260 |       struct is_forward : boost::is_base_of<std::forward_iterator_tag,
      |              ^~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::disable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::disable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:273:14:
error: 'value' is not a member of
'boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  273 |       struct disable_if_forward
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::enable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::enable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:266:14:
error: 'value' is not a member of
'boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  266 |       struct enable_if_forward
      |              ^~~~~~~~~~~~~~~~~
In file included from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp: In
instantiation of 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]':
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
error: no matching function for call to
'boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >
>::insert_range_equiv(std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >&,
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >&)'
 1714 |       table_.insert_range_equiv(first, last);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
In file included from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/set.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:20,
                 from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
note: candidate: 'template<class I> void
boost::unordered::detail::table<Types>::insert_range_equiv(I, I, typename
boost::unordered::detail::enable_if_forward<I, void*>::type) [with I = I; Types
= boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >]'
 4340 |         void insert_range_equiv(I i, I j,
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
note:   substitution of deduced template arguments resulted in errors seen
above
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
note: candidate: 'template<class I> void
boost::unordered::detail::table<Types>::insert_range_equiv(I, I, typename
boost::unordered::detail::disable_if_forward<I, void*>::type) [with I = I;
Types =
boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >]'
 4364 |         void insert_range_equiv(I i, I j,
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
note:   substitution of deduced template arguments resulted in errors seen
above
ASM generation compiler returned: 1
In file included from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_iterator_base_types.h:71,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_algobase.h:65,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/array:40,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/tuple:39,
                 from
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/functional:54,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/container_hash/hash.hpp:20,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/functional/hash.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:18,
                 from <source>:1:
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:
In substitution of 'template<class _Tp> using __iter_value_t = typename
std::__detail::__iter_traits_impl<_Tp, std::indirectly_readable_traits<_Iter>
>::type::value_type [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]':
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:259:11:
  required by substitution of 'template<class _Tp> using iter_value_t =
std::__detail::__iter_value_t<typename std::remove_cv<typename
std::remove_reference<_Tp>::type>::type> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/stl_iterator.h:1301:13:
  required from 'class
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'
<source>:7:47:   required from here
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:254:13:
error: ambiguous template instantiation for 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'
  254 |       using __iter_value_t = typename
      |             ^~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:242:12:
note: candidates are: 'template<class _Tp>  requires requires{typename
_Tp::value_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
  242 |     struct indirectly_readable_traits<_Tp>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:247:12:
note:                 'template<class _Tp>  requires requires{typename
_Tp::element_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp =
boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >]'
  247 |     struct indirectly_readable_traits<_Tp>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:254:13:
error: invalid use of incomplete type
'std::__detail::__iter_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >,
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >' {aka 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'}
  254 |       using __iter_value_t = typename
      |             ^~~~~~~~~~~~~~
/opt/compiler-explorer/gcc-10.3.0/include/c++/10.3.0/bits/iterator_concepts.h:225:29:
note: declaration of
'std::__detail::__iter_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> >,
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >' {aka 'struct
std::indirectly_readable_traits<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >'}
  225 |   template<typename> struct indirectly_readable_traits { };
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/set.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:20,
                 from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:273:14:
  required from 'struct
boost::unordered::detail::disable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::disable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:260:14:
error: no type named 'iterator_category' in 'struct
std::iterator_traits<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  260 |       struct is_forward : boost::is_base_of<std::forward_iterator_tag,
      |              ^~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::disable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::disable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:273:14:
error: 'value' is not a member of
'boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  273 |       struct disable_if_forward
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:
In instantiation of 'struct
boost::unordered::detail::enable_if_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >, void*>':
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
  required by substitution of 'template<class I> void
boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > > >::insert_range_equiv<I>(I,
I, typename boost::unordered::detail::enable_if_forward<I, void*>::type) [with
I =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >]'
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
  required from 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]'
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:266:14:
error: 'value' is not a member of
'boost::unordered::detail::is_forward<std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > > >'
  266 |       struct enable_if_forward
      |              ^~~~~~~~~~~~~~~~~
In file included from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp: In
instantiation of 'void boost::unordered::unordered_multiset<T, H, P,
A>::insert(InputIt, InputIt) [with InputIt =
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >; T = std::__cxx11::basic_string<char>; H =
boost::hash<std::__cxx11::basic_string<char> >; P =
std::equal_to<std::__cxx11::basic_string<char> >; A =
std::allocator<std::__cxx11::basic_string<char> >]':
<source>:7:84:   required from here
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:1714:32:
error: no matching function for call to
'boost::unordered::detail::table<boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >
>::insert_range_equiv(std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >&,
std::move_iterator<boost::unordered::iterator_detail::c_iterator<boost::unordered::detail::ptr_node<std::__cxx11::basic_string<char>
> > >&)'
 1714 |       table_.insert_range_equiv(first, last);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
In file included from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/set.hpp:6,
                 from
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/unordered_set.hpp:20,
                 from <source>:1:
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
note: candidate: 'template<class I> void
boost::unordered::detail::table<Types>::insert_range_equiv(I, I, typename
boost::unordered::detail::enable_if_forward<I, void*>::type) [with I = I; Types
= boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >]'
 4340 |         void insert_range_equiv(I i, I j,
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4340:14:
note:   substitution of deduced template arguments resulted in errors seen
above
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
note: candidate: 'template<class I> void
boost::unordered::detail::table<Types>::insert_range_equiv(I, I, typename
boost::unordered::detail::disable_if_forward<I, void*>::type) [with I = I;
Types =
boost::unordered::detail::set<std::allocator<std::__cxx11::basic_string<char>
>, std::__cxx11::basic_string<char>,
boost::hash<std::__cxx11::basic_string<char> >,
std::equal_to<std::__cxx11::basic_string<char> > >]'
 4364 |         void insert_range_equiv(I i, I j,
      |              ^~~~~~~~~~~~~~~~~~
/opt/compiler-explorer/libs/boost_1_75_0/boost/unordered/detail/implementation.hpp:4364:14:
note:   substitution of deduced template arguments resulted in errors seen
above
Execution build compiler returned: 1
```

It works on 9 and 11 though. Could a fix be backported to 10?

https://godbolt.org/z/Mzd3TaM4Y

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug libstdc++/100243] [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'}
  2021-04-24  1:46 [Bug libstdc++/100243] New: [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'} nok.raven at gmail dot com
@ 2021-04-26  7:22 ` rguenth at gcc dot gnu.org
  2021-04-26  9:31 ` redi at gcc dot gnu.org
  2021-04-26 10:46 ` redi at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2021-04-26  7:22 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |10.3.0
           Keywords|                            |rejects-valid
      Known to work|                            |11.0, 9.3.0
   Target Milestone|---                         |10.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug libstdc++/100243] [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'}
  2021-04-24  1:46 [Bug libstdc++/100243] New: [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'} nok.raven at gmail dot com
  2021-04-26  7:22 ` [Bug libstdc++/100243] " rguenth at gcc dot gnu.org
@ 2021-04-26  9:31 ` redi at gcc dot gnu.org
  2021-04-26 10:46 ` redi at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: redi at gcc dot gnu.org @ 2021-04-26  9:31 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
It should be already fixed on the branch by
32a859531e854382c18abf0b14a306d83f793eb5

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug libstdc++/100243] [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'}
  2021-04-24  1:46 [Bug libstdc++/100243] New: [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'} nok.raven at gmail dot com
  2021-04-26  7:22 ` [Bug libstdc++/100243] " rguenth at gcc dot gnu.org
  2021-04-26  9:31 ` redi at gcc dot gnu.org
@ 2021-04-26 10:46 ` redi at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: redi at gcc dot gnu.org @ 2021-04-26 10:46 UTC (permalink / raw)
  To: gcc-bugs

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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Confirmed as fixed on the branch already.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-04-26 10:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-24  1:46 [Bug libstdc++/100243] New: [10 Regression] invalid use of incomplete type 'std::__detail::__iter_traits<T, std::indirectly_readable_traits<T> >' {aka 'struct std::indirectly_readable_traits<T>'} nok.raven at gmail dot com
2021-04-26  7:22 ` [Bug libstdc++/100243] " rguenth at gcc dot gnu.org
2021-04-26  9:31 ` redi at gcc dot gnu.org
2021-04-26 10:46 ` redi at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).