https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115074
Marek Polacek <mpolacek at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mpolacek at gcc dot gnu.org See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=101361 Ever confirmed|0 |1 Last reconfirmed| |2024-05-13 Status|UNCONFIRMED |NEW --- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> --- Confirmed, I think. Doesn't look like a dup of bug 101361. In file included from 115074.C:2: In constructor ‘constexpr std::__detail::__variant::_Variant_storage<true, _Types ...>::_Variant_storage(std::in_place_index_t<_Np>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}; _Types = {int}]’, inlined from ‘constexpr std::__detail::__variant::_Copy_ctor_base<true, int>::_Copy_ctor_base(std::in_place_index_t<_Idx>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}][inherited from std::__detail::__variant::_Variant_storage<true, int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:611:20, inlined from ‘constexpr std::__detail::__variant::_Move_ctor_base<true, int>::_Move_ctor_base(std::in_place_index_t<_Idx>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}][inherited from std::__detail::__variant::_Variant_storage<true, int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:649:20, inlined from ‘constexpr std::__detail::__variant::_Copy_assign_base<true, int>::_Copy_assign_base(std::in_place_index_t<_Idx>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}][inherited from std::__detail::__variant::_Variant_storage<true, int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:701:20, inlined from ‘constexpr std::__detail::__variant::_Move_assign_base<true, int>::_Move_assign_base(std::in_place_index_t<_Idx>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}][inherited from std::__detail::__variant::_Variant_storage<true, int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:755:20, inlined from ‘constexpr std::__detail::__variant::_Variant_base<_Types>::_Variant_base(std::in_place_index_t<_Np>, _Args&& ...) [with long unsigned int _Np = 0; _Args = {}; _Types = {int}]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:774:45, inlined from ‘constexpr std::__detail::__variant::_Variant_base<_Types>::_Variant_base() [with _Types = {int}]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:769:40, inlined from ‘constexpr std::variant<_Types>::variant() requires is_default_constructible_v<typename std::_Nth_type<0, _Elements ...>::type> [with _Types = {int}]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:1431:7, inlined from ‘constexpr decltype (::new(void*(0)) _Tp) std::construct_at(_Tp*, _Args&& ...) [with _Tp = variant<int>; _Args = {}]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_construct.h:97:14, inlined from ‘static constexpr void std::allocator_traits<std::allocator<_Up> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = std::variant<int>; _Args = {}; _Tp = std::variant<int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/alloc_traits.h:536:21, inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = std::variant<int>; _Alloc = std::allocator<std::variant<int> >]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/vector.tcc:117:30, inlined from ‘VariantVector::VariantVector()’ at 115074.C:14:26: /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/variant:534:9: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=] 534 | _M_index{_Np} | ^~~~~~~~~~~~~ In file included from /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/x86_64-pc-linux-gnu/bits/c++allocator.h:33, from /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/allocator.h:46, from /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/vector:63, from 115074.C:1: In member function ‘_Tp* std::__new_allocator<_Tp>::allocate(size_type, const void*) [with _Tp = std::variant<int>]’, inlined from ‘constexpr _Tp* std::allocator< <template-parameter-1-1> >::allocate(std::size_t) [with _Tp = std::variant<int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/allocator.h:196:40, inlined from ‘static constexpr _Tp* std::allocator_traits<std::allocator<_Up> >::allocate(allocator_type&, size_type) [with _Tp = std::variant<int>]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/alloc_traits.h:478:28, inlined from ‘constexpr std::_Vector_base<_Tp, _Alloc>::pointer std::_Vector_base<_Tp, _Alloc>::_M_allocate(std::size_t) [with _Tp = std::variant<int>; _Alloc = std::allocator<std::variant<int> >]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_vector.h:380:33, inlined from ‘constexpr void std::vector<_Tp, _Alloc>::_M_realloc_append(_Args&& ...) [with _Args = {}; _Tp = std::variant<int>; _Alloc = std::allocator<std::variant<int> >]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/vector.tcc:596:44, inlined from ‘constexpr std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {}; _Tp = std::variant<int>; _Alloc = std::allocator<std::variant<int> >]’ at /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/vector.tcc:123:21, inlined from ‘VariantVector::VariantVector()’ at 115074.C:13:26: /home/mpolacek/x/trunk/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/new_allocator.h:151:55: note: at offset 20 into destination object of size 16 allocated by ‘operator new’ 151 | return static_cast<_Tp*>(_GLIBCXX_OPERATOR_NEW(__n * sizeof(_Tp))); | ^