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).