public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/102778] New: cannot parameter pack std::variant
@ 2021-10-15 13:00 benni.probst at gmx dot de
2021-10-15 13:28 ` [Bug c++/102778] " redi at gcc dot gnu.org
2021-10-21 4:22 ` pinskia at gcc dot gnu.org
0 siblings, 2 replies; 3+ messages in thread
From: benni.probst at gmx dot de @ 2021-10-15 13:00 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102778
Bug ID: 102778
Summary: cannot parameter pack std::variant
Product: gcc
Version: 11.2.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: benni.probst at gmx dot de
Target Milestone: ---
Created attachment 51610
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=51610&action=edit
Source code for the container variant module
When trying to unpack a variadic reference on an std::varaint containing
container iterators I get an interal compiler error
====================[ Build | UltiHash | Debug
]================================
/usr/local/bin/cmake --build
/home/benjamin/CLionProjects/UltiHash/cmake-build-debug --target UltiHash -j 8
Scanning dependencies of target UltiHash
[ 11%] Building CXX object CMakeFiles/UltiHash.dir/dataContainer.cpp.o
[ 22%] Building CXX object CMakeFiles/UltiHash.dir/main.cpp.o
In file included from
/home/benjamin/CLionProjects/UltiHash/aiHeuristics_runtime_tests.h:4,
from /home/benjamin/CLionProjects/UltiHash/main.cpp:8:
/home/benjamin/CLionProjects/UltiHash/dataContainer.h: In instantiation of
‘dataContainer<unsigned
int>::erase<std::variant<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >,
std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>,
std::_List_iterator<unsigned int>, boost::container::vec_iterator<unsigned
int*, false>, boost::container::stable_vector_iterator<unsigned int*, false>,
unsigned int*, boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&>(dataContainer<unsigned int>::iteratorType,
std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&)::<lambda(auto:164)>::<lambda(auto:165)> [with auto:165 =
std::integral_constant<long unsigned int, 0>]’:
/usr/local/include/boost/mp11/detail/mp_with_index.hpp:374:84: required by
substitution of ‘template<class N, class F> constexpr decltype
(declval<F>()(declval<boost::mp11::mp_size_t<0> >()))
boost::mp11::mp_with_index(std::size_t, F&&) [with N =
std::integral_constant<long unsigned int, 10>; F = dataContainer<unsigned
int>::erase<std::variant<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >,
std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>,
std::_List_iterator<unsigned int>, boost::container::vec_iterator<unsigned
int*, false>, boost::container::stable_vector_iterator<unsigned int*, false>,
unsigned int*, boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&>(dataContainer<unsigned int>::iteratorType,
std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&)::<lambda(auto:164)>::<lambda(auto:165)>]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:804:77: required from
‘dataContainer<unsigned
int>::erase<std::variant<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >,
std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>,
std::_List_iterator<unsigned int>, boost::container::vec_iterator<unsigned
int*, false>, boost::container::stable_vector_iterator<unsigned int*, false>,
unsigned int*, boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&>(dataContainer<unsigned int>::iteratorType,
std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&)::<lambda(auto:164)> [with auto:164 = std::integral_constant<long unsigned
int, 0>]’
/usr/local/include/boost/mp11/detail/mp_with_index.hpp:374:84: required by
substitution of ‘template<class N, class F> constexpr decltype
(declval<F>()(declval<boost::mp11::mp_size_t<0> >()))
boost::mp11::mp_with_index(std::size_t, F&&) [with N =
std::integral_constant<long unsigned int, 10>; F = dataContainer<unsigned
int>::erase<std::variant<__gnu_cxx::__normal_iterator<unsigned int*,
std::vector<unsigned int, std::allocator<unsigned int> > >,
std::_Deque_iterator<unsigned int, unsigned int&, unsigned int*>,
std::_List_iterator<unsigned int>, boost::container::vec_iterator<unsigned
int*, false>, boost::container::stable_vector_iterator<unsigned int*, false>,
unsigned int*, boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&>(dataContainer<unsigned int>::iteratorType,
std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&)::<lambda(auto:164)>]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:803:69: required from
‘dataContainer<T, alloc>::iteratorType dataContainer<T,
alloc>::erase(dataContainer<T, alloc>::iteratorType, Args&& ...) [with Args =
{std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>&}; T = unsigned int; alloc = {}; dataContainer<T, alloc>::iteratorType =
std::variant<__gnu_cxx::__normal_iterator<unsigned int*, std::vector<unsigned
int, std::allocator<unsigned int> > >, std::_Deque_iterator<unsigned int,
unsigned int&, unsigned int*>, std::_List_iterator<unsigned int>,
boost::container::vec_iterator<unsigned int*, false>,
boost::container::stable_vector_iterator<unsigned int*, false>, unsigned int*,
boost::container::dtl::deque_iterator<unsigned int*, false>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::list_iterator<boost::intrusive::bhtraits<boost::container::dtl::list_node<unsigned
int, void*>, boost::intrusive::list_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 1>, false>, false>,
std::_Fwd_list_iterator<unsigned int>,
boost::container::dtl::iterator_from_iiterator<boost::intrusive::slist_iterator<boost::intrusive::bhtraits<boost::container::dtl::slist_node<unsigned
int, void*>, boost::intrusive::slist_node_traits<void*>,
boost::intrusive::normal_link, boost::intrusive::dft_tag, 2>, false>, false>
>]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:1616:22: required from
‘dataContainer<unsigned int>::benchmark(long unsigned int, long unsigned int,
internEnum, internEnum)::<lambda(auto:178)>::<lambda(auto:179)> [with auto:179
= std::integral_constant<long unsigned int, 0>]’
/usr/local/include/boost/mp11/detail/mp_with_index.hpp:374:84: required by
substitution of ‘template<class N, class F> constexpr decltype
(declval<F>()(declval<boost::mp11::mp_size_t<0> >()))
boost::mp11::mp_with_index(std::size_t, F&&) [with N =
std::integral_constant<long unsigned int, 10>; F = dataContainer<unsigned
int>::benchmark(long unsigned int, long unsigned int, internEnum,
internEnum)::<lambda(auto:178)>::<lambda(auto:179)>]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:1208:83: required from
‘dataContainer<unsigned int>::benchmark(long unsigned int, long unsigned int,
internEnum, internEnum)::<lambda(auto:178)> [with auto:178 =
std::integral_constant<long unsigned int, 0>]’
/usr/local/include/boost/mp11/detail/mp_with_index.hpp:374:84: required by
substitution of ‘template<class N, class F> constexpr decltype
(declval<F>()(declval<boost::mp11::mp_size_t<0> >()))
boost::mp11::mp_with_index(std::size_t, F&&) [with N =
std::integral_constant<long unsigned int, 10>; F = dataContainer<unsigned
int>::benchmark(long unsigned int, long unsigned int, internEnum,
internEnum)::<lambda(auto:178)>]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:1204:79: required from
‘void dataContainer<T, alloc>::benchmark(long unsigned int, long unsigned int,
internEnum, internEnum) [with T = unsigned int; alloc = {}; internEnum = long
unsigned int]’
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:1203:10: required from
here
/home/benjamin/CLionProjects/UltiHash/dataContainer.h:880:85: internal compiler
error: trying to capture ‘args#0’ in instantiation of generic lambda
880 | auto itUnpack_end =
std::get<I2>(std::forward<iteratorType>(args)...);
|
^~~~
0x7c3781 add_capture(tree_node*, tree_node*, tree_node*, bool, bool)
../../gcc/cp/lambda.c:619
0x7c37f3 add_default_capture(tree_node*, tree_node*, tree_node*)
../../gcc/cp/lambda.c:679
0x87bd81 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:20916
0x87a742 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:19650
0x87a742 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:21031
0x879f87 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:19650
0x879f87 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:20315
0x88bd14 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:19650
0x88bd14 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:19200
0x88ac3a tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:18176
0x88ac3a gen_elem_of_pack_expansion_instantiation
../../gcc/cp/pt.c:12587
0x88ac3a tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
../../gcc/cp/pt.c:13250
0x87b517 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:20320
0x88bd14 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/cp/pt.c:19650
0x88bd14 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:19200
0x8921cc tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:16506
0x8921cc tsubst_init
../../gcc/cp/pt.c:16510
0x88eef9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:18359
0x88d114 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:18176
0x88d114 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/cp/pt.c:18190
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
make[3]: *** [CMakeFiles/UltiHash.dir/build.make:72:
CMakeFiles/UltiHash.dir/main.cpp.o] Error 1
make[2]: *** [CMakeFiles/Makefile2:83: CMakeFiles/UltiHash.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:90: CMakeFiles/UltiHash.dir/rule] Error 2
make: *** [Makefile:124: UltiHash] Error 2
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug c++/102778] cannot parameter pack std::variant
2021-10-15 13:00 [Bug c++/102778] New: cannot parameter pack std::variant benni.probst at gmx dot de
@ 2021-10-15 13:28 ` redi at gcc dot gnu.org
2021-10-21 4:22 ` pinskia at gcc dot gnu.org
1 sibling, 0 replies; 3+ messages in thread
From: redi at gcc dot gnu.org @ 2021-10-15 13:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102778
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2021-10-15
Status|UNCONFIRMED |WAITING
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Please provide a complete reproducer.
https://gcc.gnu.org/bugs
I already asked for this in PR 102749 and you were asked to read the link above
when creating both your bug reports. Please read it.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug c++/102778] cannot parameter pack std::variant
2021-10-15 13:00 [Bug c++/102778] New: cannot parameter pack std::variant benni.probst at gmx dot de
2021-10-15 13:28 ` [Bug c++/102778] " redi at gcc dot gnu.org
@ 2021-10-21 4:22 ` pinskia at gcc dot gnu.org
1 sibling, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-10-21 4:22 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102778
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |DUPLICATE
Status|WAITING |RESOLVED
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Dup of bug 100295.
*** This bug has been marked as a duplicate of bug 100295 ***
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-10-21 4:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-15 13:00 [Bug c++/102778] New: cannot parameter pack std::variant benni.probst at gmx dot de
2021-10-15 13:28 ` [Bug c++/102778] " redi at gcc dot gnu.org
2021-10-21 4:22 ` pinskia 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).