From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id ECE0B3858D1E; Mon, 3 Oct 2022 20:11:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ECE0B3858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1664827888; bh=ZzQu0miqe0eF1h73meLTkjCTupqLy6SdrUBlXDX7lf4=; h=From:To:Subject:Date:From; b=bjWllZ3EkQ31yDCPbAVAGZe2rC3bumKCmbyJRxIN5sLx6QvJXyl8GsQ5BFQ+RIuZU R2Key7e2HhDjp3cZP8VzWw4+E4PiN2eC0EBqL44fLT4J4AZTs01tv3t4xXbD9hpKO3 m6TvG66QsL8P5lOq2w0Ut2UnZnnqmrhvkpynX/cs= From: "carsten.andrich at gmx dot de" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/107138] New: [12 regression] std::variant triggers false-positive 'may be used uninitialized' warning Date: Mon, 03 Oct 2022 20:11:28 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 12.2.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: carsten.andrich at gmx dot de X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D107138 Bug ID: 107138 Summary: [12 regression] std::variant triggers false-positive 'may be used uninitialized' warning Product: gcc Version: 12.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: carsten.andrich at gmx dot de Target Milestone: --- Created attachment 53660 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=3D53660&action=3Dedit .ii file as per bug writing guidelines Compiling the following code using an std::string inside an std::variant compiles without warnings on g++ 10.4.0 and 11.3.0 as well as clang++ 14.0.6 with -std=3Dc++17 -Wall -Wextra -O2 -fsanitize=3Dundefined: ``` #include #include #include class Toml { public: class Array; typedef std::variant value_t; class Array { public: std::vector data; Array(const std::vector &data) { this->data.reserve(data.size()); for (const double &elem : data) { this->data.push_back(elem); } } }; }; int main(int argc, char *argv[]) { (void) argc; (void) argv; std::vector a =3D { 42., 42. }; auto array =3D Toml::Array(a); return 0; } ``` However on g++ 12.2.0 as well as gcc 13 trunk (https://godbolt.org/z/6MqGWc= Phr) it triggers what I believe are several false positive 'may be used uninitialized' warnings. Removing the std::string from the std::variant resolves the issue. ``` Using built-in specs. COLLECT_GCC=3Dg++-12 COLLECT_LTO_WRAPPER=3D/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper OFFLOAD_TARGET_NAMES=3Dnvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=3D1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion=3D'Debian 12.2.0-4' --with-bugurl=3Dfile:///usr/share/doc/gcc-12/README.Bugs --enable-languages=3Dc,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=3D/usr --with-gcc-major-version-only --program-suffix=3D-12 --program-prefix=3Dx86_64-linux-gnu- --enable-shared --enable-linker-build-= id --libexecdir=3D/usr/lib --without-included-gettext --enable-threads=3Dposix --libdir=3D/usr/lib --enable-nls --enable-clocale=3Dgnu --enable-libstdcxx-= debug --enable-libstdcxx-time=3Dyes --with-default-libstdcxx-abi=3Dnew --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=3Drelea= se --with-target-system-zlib=3Dauto --enable-objc-gc=3Dauto --enable-multiarch --disable-werror --enable-cet --with-arch-32=3Di686 --with-abi=3Dm64 --with-multilib-list=3Dm32,m64,mx32 --enable-multilib --with-tune=3Dgeneric --enable-offload-targets=3Dnvptx-none=3D/build/gcc-12-zSjAmm/gcc-12-12.2.0/= debian/tmp-nvptx/usr,amdgcn-amdhsa=3D/build/gcc-12-zSjAmm/gcc-12-12.2.0/deb= ian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=3Drelease --build=3Dx86_64-linux-gnu --host=3Dx86_64-linux-gnu --target=3Dx86_64-linu= x-gnu Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.2.0 (Debian 12.2.0-4)=20 COLLECT_GCC_OPTIONS=3D'-v' '-save-temps' '-std=3Dc++17' '-Wall' '-Wextra' '= -O2' '-o' 'gcc_bug' '-shared-libgcc' '-mtune=3Dgeneric' '-march=3Dx86-64' /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -E -quiet -v -imultiarch x86_64-linux-gnu -D_GNU_SOURCE gcc_bug.cpp -mtune=3Dgeneric -march=3Dx86-64 -std=3Dc++17 -Wall -Wextra -O2 -fpch-preprocess -fasynchronous-unwind-table= s -o gcc_bug.ii ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/12" ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fi= xed" ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/12 /usr/include/x86_64-linux-gnu/c++/12 /usr/include/c++/12/backward /usr/lib/gcc/x86_64-linux-gnu/12/include /usr/local/include /usr/include/x86_64-linux-gnu /usr/include End of search list. COLLECT_GCC_OPTIONS=3D'-v' '-save-temps' '-std=3Dc++17' '-Wall' '-Wextra' '= -O2' '-o' 'gcc_bug' '-shared-libgcc' '-mtune=3Dgeneric' '-march=3Dx86-64' /usr/lib/gcc/x86_64-linux-gnu/12/cc1plus -fpreprocessed gcc_bug.ii -quiet -dumpbase gcc_bug.cpp -dumpbase-ext .cpp -mtune=3Dgeneric -march=3Dx86-64 -= O2 -Wall -Wextra -std=3Dc++17 -version -fasynchronous-unwind-tables -o gcc_bug.s GNU C++17 (Debian 12.2.0-4) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.25-GMP GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D131= 072 GNU C++17 (Debian 12.2.0-4) version 12.2.0 (x86_64-linux-gnu) compiled by GNU C version 12.2.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl-0.25-GMP GGC heuristics: --param ggc-min-expand=3D100 --param ggc-min-heapsize=3D131= 072 Compiler executable checksum: 2f2982b7a0eb82900d513759f8d84f81 In file included from /usr/include/c++/12/string:53, from gcc_bug.cpp:3: In member function =E2=80=98std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::length() const [with _CharT =3D char; _Traits =3D std::char_traits= ; _Alloc =3D std::allocator]=E2=80=99, inlined from =E2=80=98std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT =3D char; _Traits =3D std::char_traits; _Alloc =3D std::allocator]=E2=80=99 at /usr/include/c++/12/bits/basic_string.h:6= 76:22, inlined from =E2=80=98constexpr std::__detail::__variant::_Uninitialize= d<_Type, false>::_Uninitialized(std::in_place_index_t<0>, _Args&& ...) [with _Args = =3D {std::__cxx11::basic_string, std::allocator >}; _Type =3D std::__cxx11::basic_string]=E2=80=99 at /usr/include/c++/12/variant:283:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<0>, _Args&& ...) [with _A= rgs =3D {std::__cxx11::basic_string, std::allocator >}; _First =3D std::__cxx11::basic_string; _Rest= =3D {int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:3= 85:4, inlined from =E2=80=98void std::_Construct(_Tp*, _Args&& ...) [with _Tp= =3D __detail::__variant::_Variadic_union<__cxx11::basic_string, allocator >, int, double, bool, Toml::Array>; _Arg= s =3D {const in_place_index_t<0>&, __cxx11::basic_string, allocator >}]=E2=80=99 at /usr/include/c++/12/bits/stl_construct.h:11= 9:7, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&):: mutable [= with auto:4 =3D std::__cxx11::basic_string; auto:5 =3D std::integral_const= ant]=E2=80=99 at /usr/include/c++/12/variant:605:23, inlined from =E2=80=98constexpr _Res std::__invoke_impl(__invoke_other,= _Fn&&, _Args&& ...) [with _Res =3D void; _Fn =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {__cxx11::basic_string, allocator >, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:61:36, inlined from =E2=80=98constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {__cxx11::basic_string, allocator >, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:96:40, inlined from =E2=80=98static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl, std::integer_sequence >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_t= ype =3D std::__detail::__variant::__variant_idx_cookie; _Visitor =3D std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::&&; _Varia= nts =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>&&}; long unsigned i= nt ...__indices =3D {0}]=E2=80=99 at /usr/include/c++/12/variant:1020:17, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1783:1= 05, inlined from =E2=80=98constexpr void std::__detail::__variant::__raw_idx_visit(_Visitor&&, _Variants&& ...) [with _Visitor =3D _Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:184:44, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base<, _Types>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :600:28, inlined from =E2=80=98std::__detail::__variant::_Copy_assign_base<, _Types>::_Copy_assign_base(std::__detail::__variant::_Copy_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :665:7, inlined from =E2=80=98std::__detail::__variant::_Move_assign_base<, _Types>::_Move_assign_base(std::__detail::__variant::_Move_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :719:7, inlined from =E2=80=98std::__detail::__variant::_Variant_base<_Types>::_Variant_base(std= ::__detail::__variant::_Variant_base<_Types>&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:750:7, inlined from =E2=80=98std::variant<_Types>::variant(std::variant<_Types= >&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:1404:7, inlined from =E2=80=98void std::__new_allocator<_Tp>::construct(_Up*, _= Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/new_allocator.h:175:4, inlined from =E2=80=98static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/alloc_traits.h:516:17, inlined from =E2=80=98std::vector<_Tp, _Alloc>::reference std::vector<_= Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/vector.tcc:117:30, inlined from =E2=80=98void std::vector<_Tp, _Alloc>::push_back(value_ty= pe&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:1294:21, inlined from =E2=80=98Toml::Array::Array(const std::vector&)=E2= =80=99 at gcc_bug.cpp:19:37: /usr/include/c++/12/bits/basic_string.h:1071:16: warning: =E2=80=98*(const std::__cxx11::basic_string, std::allocator >*)((char*)& + offsetof(std::value_type, std::variant, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_storage, std::allocator >, int, double, bool, Toml::Array>::_M_u)).std::__cxx11::basic_string::_M_string_length=E2= =80=99 may be used uninitialized [-Wmaybe-uninitialized] 1071 | { return _M_string_length; } | ^~~~~~~~~~~~~~~~ gcc_bug.cpp: In constructor =E2=80=98Toml::Array::Array(const std::vector&)=E2=80=99: gcc_bug.cpp:19:37: note: =E2=80=98=E2=80=99 declared here 19 | this->data.push_back(elem); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ In member function =E2=80=98std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::length() const [with _CharT =3D char; _Traits =3D std::char_traits= ; _Alloc =3D std::allocator]=E2=80=99, inlined from =E2=80=98std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&&) [with _CharT =3D char; _Traits =3D std::char_traits; _Alloc =3D std::allocator]=E2=80=99 at /usr/include/c++/12/bits/basic_string.h:6= 87:11, inlined from =E2=80=98constexpr std::__detail::__variant::_Uninitialize= d<_Type, false>::_Uninitialized(std::in_place_index_t<0>, _Args&& ...) [with _Args = =3D {std::__cxx11::basic_string, std::allocator >}; _Type =3D std::__cxx11::basic_string]=E2=80=99 at /usr/include/c++/12/variant:283:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<0>, _Args&& ...) [with _A= rgs =3D {std::__cxx11::basic_string, std::allocator >}; _First =3D std::__cxx11::basic_string; _Rest= =3D {int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:3= 85:4, inlined from =E2=80=98void std::_Construct(_Tp*, _Args&& ...) [with _Tp= =3D __detail::__variant::_Variadic_union<__cxx11::basic_string, allocator >, int, double, bool, Toml::Array>; _Arg= s =3D {const in_place_index_t<0>&, __cxx11::basic_string, allocator >}]=E2=80=99 at /usr/include/c++/12/bits/stl_construct.h:11= 9:7, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&):: mutable [= with auto:4 =3D std::__cxx11::basic_string; auto:5 =3D std::integral_const= ant]=E2=80=99 at /usr/include/c++/12/variant:605:23, inlined from =E2=80=98constexpr _Res std::__invoke_impl(__invoke_other,= _Fn&&, _Args&& ...) [with _Res =3D void; _Fn =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {__cxx11::basic_string, allocator >, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:61:36, inlined from =E2=80=98constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {__cxx11::basic_string, allocator >, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:96:40, inlined from =E2=80=98static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl, std::integer_sequence >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_t= ype =3D std::__detail::__variant::__variant_idx_cookie; _Visitor =3D std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::&&; _Varia= nts =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>&&}; long unsigned i= nt ...__indices =3D {0}]=E2=80=99 at /usr/include/c++/12/variant:1020:17, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1783:1= 05, inlined from =E2=80=98constexpr void std::__detail::__variant::__raw_idx_visit(_Visitor&&, _Variants&& ...) [with _Visitor =3D _Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:184:44, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base<, _Types>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :600:28, inlined from =E2=80=98std::__detail::__variant::_Copy_assign_base<, _Types>::_Copy_assign_base(std::__detail::__variant::_Copy_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :665:7, inlined from =E2=80=98std::__detail::__variant::_Move_assign_base<, _Types>::_Move_assign_base(std::__detail::__variant::_Move_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :719:7, inlined from =E2=80=98std::__detail::__variant::_Variant_base<_Types>::_Variant_base(std= ::__detail::__variant::_Variant_base<_Types>&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:750:7, inlined from =E2=80=98std::variant<_Types>::variant(std::variant<_Types= >&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:1404:7, inlined from =E2=80=98void std::__new_allocator<_Tp>::construct(_Up*, _= Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/new_allocator.h:175:4, inlined from =E2=80=98static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/alloc_traits.h:516:17, inlined from =E2=80=98std::vector<_Tp, _Alloc>::reference std::vector<_= Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/vector.tcc:117:30, inlined from =E2=80=98void std::vector<_Tp, _Alloc>::push_back(value_ty= pe&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:1294:21, inlined from =E2=80=98Toml::Array::Array(const std::vector&)=E2= =80=99 at gcc_bug.cpp:19:37: /usr/include/c++/12/bits/basic_string.h:1071:16: warning: =E2=80=98*(const std::__cxx11::basic_string, std::allocator >*)((char*)& + offsetof(std::value_type, std::variant, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_storage, std::allocator >, int, double, bool, Toml::Array>::_M_u)).std::__cxx11::basic_string::_M_string_length=E2= =80=99 may be used uninitialized [-Wmaybe-uninitialized] 1071 | { return _M_string_length; } | ^~~~~~~~~~~~~~~~ gcc_bug.cpp: In constructor =E2=80=98Toml::Array::Array(const std::vector&)=E2=80=99: gcc_bug.cpp:19:37: note: =E2=80=98=E2=80=99 declared here 19 | this->data.push_back(elem); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ In file included from /usr/include/c++/12/vector:64, from gcc_bug.cpp:2: In constructor =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data::_Vector_impl_data(std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99, inlined from =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_impl::_Vector_impl(std::_Vector_base<_Tp, _Alloc>::_Vector_impl&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:152:68, inlined from =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::_Vector_base<_Tp, _Alloc>&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:335:7, inlined from =E2=80=98std::vector<_Tp, _Alloc>::vector(std::vector<_Tp,= _Alloc>&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:615:7, inlined from =E2=80=98Toml::Array::Array(Toml::Array&&)=E2=80=99 at gcc= _bug.cpp:11:11, inlined from =E2=80=98constexpr std::__detail::__variant::_Uninitialize= d<_Type, false>::_Uninitialized(std::in_place_index_t<0>, _Args&& ...) [with _Args = =3D {Toml::Array}; _Type =3D Toml::Array]=E2=80=99 at /usr/include/c++/12/varia= nt:283:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<0>, _Args&& ...) [with _A= rgs =3D {Toml::Array}; _First =3D Toml::Array; _Rest =3D {}]=E2=80=99 at /usr/include/c++/12/variant:385:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 1; _Args =3D {Toml::Array}; _First =3D bool; _Rest =3D {Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 2; _Args =3D {Toml::Array}; _First =3D double; _Rest = =3D {bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 3; _Args =3D {Toml::Array}; _First =3D int; _Rest =3D = {double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 4; _Args =3D {Toml::Array}; _First =3D std::__cxx11::basic_string; _Rest =3D {int, double, bool, Toml::Array= }]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98void std::_Construct(_Tp*, _Args&& ...) [with _Tp= =3D __detail::__variant::_Variadic_union<__cxx11::basic_string, allocator >, int, double, bool, Toml::Array>; _Arg= s =3D {const in_place_index_t<4>&, Toml::Array}]=E2=80=99 at /usr/include/c++/12/bits/stl_construct.h:119:7, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&):: mutable [= with auto:4 =3D Toml::Array; auto:5 =3D std::integral_constant]=E2=80=99 at /usr/include/c++/12/variant:605:23, inlined from =E2=80=98constexpr _Res std::__invoke_impl(__invoke_other,= _Fn&&, _Args&& ...) [with _Res =3D void; _Fn =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {Toml::Array, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:61:36, inlined from =E2=80=98constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {Toml::Array, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:96:40, inlined from =E2=80=98static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl, std::integer_sequence >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_t= ype =3D std::__detail::__variant::__variant_idx_cookie; _Visitor =3D std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::&&; _Varia= nts =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>&&}; long unsigned i= nt ...__indices =3D {4}]=E2=80=99 at /usr/include/c++/12/variant:1020:17, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1787:1= 05, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1729:5, inlined from =E2=80=98constexpr void std::__detail::__variant::__raw_idx_visit(_Visitor&&, _Variants&& ...) [with _Visitor =3D _Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:184:44, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base<, _Types>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :600:28, inlined from =E2=80=98std::__detail::__variant::_Copy_assign_base<, _Types>::_Copy_assign_base(std::__detail::__variant::_Copy_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :665:7, inlined from =E2=80=98std::__detail::__variant::_Move_assign_base<, _Types>::_Move_assign_base(std::__detail::__variant::_Move_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :719:7, inlined from =E2=80=98std::__detail::__variant::_Variant_base<_Types>::_Variant_base(std= ::__detail::__variant::_Variant_base<_Types>&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:750:7, inlined from =E2=80=98std::variant<_Types>::variant(std::variant<_Types= >&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:1404:7, inlined from =E2=80=98void std::__new_allocator<_Tp>::construct(_Up*, _= Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/new_allocator.h:175:4, inlined from =E2=80=98static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/alloc_traits.h:516:17, inlined from =E2=80=98std::vector<_Tp, _Alloc>::reference std::vector<_= Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/vector.tcc:117:30, inlined from =E2=80=98void std::vector<_Tp, _Alloc>::push_back(value_ty= pe&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:1294:21, inlined from =E2=80=98Toml::Array::Array(const std::vector&)=E2= =80=99 at gcc_bug.cpp:19:37: /usr/include/c++/12/bits/stl_vector.h:106:49: warning: =E2=80=98*(std::_Vector_base, std::allocator >, int, double, bool, Toml::Array>, std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> > >::_Vector_impl_data*)((char*)& + offsetof(std::value_type, std::variant, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_storage, std::allocator >, int, double, bool, Toml::Array>::_M_u)).std::_Vector_base, std::allocator >, int, double, bool, Toml::Array>, std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> > >::_Vector_impl_data::_M_finish=E2=80=99 may be used uninitialized [-Wmaybe-uninitialized] 106 | : _M_start(__x._M_start), _M_finish(__x._M_finish), | ~~~~^~~~~~~~~ gcc_bug.cpp: In constructor =E2=80=98Toml::Array::Array(const std::vector&)=E2=80=99: gcc_bug.cpp:19:37: note: =E2=80=98=E2=80=99 declared here 19 | this->data.push_back(elem); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ In constructor =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data::_Vector_impl_data(std::_Vector_base<_Tp, _Alloc>::_Vector_impl_data&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99, inlined from =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_impl::_Vector_impl(std::_Vector_base<_Tp, _Alloc>::_Vector_impl&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:152:68, inlined from =E2=80=98std::_Vector_base<_Tp, _Alloc>::_Vector_base(std::_Vector_base<_Tp, _Alloc>&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:335:7, inlined from =E2=80=98std::vector<_Tp, _Alloc>::vector(std::vector<_Tp,= _Alloc>&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:615:7, inlined from =E2=80=98Toml::Array::Array(Toml::Array&&)=E2=80=99 at gcc= _bug.cpp:11:11, inlined from =E2=80=98constexpr std::__detail::__variant::_Uninitialize= d<_Type, false>::_Uninitialized(std::in_place_index_t<0>, _Args&& ...) [with _Args = =3D {Toml::Array}; _Type =3D Toml::Array]=E2=80=99 at /usr/include/c++/12/varia= nt:283:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<0>, _Args&& ...) [with _A= rgs =3D {Toml::Array}; _First =3D Toml::Array; _Rest =3D {}]=E2=80=99 at /usr/include/c++/12/variant:385:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 1; _Args =3D {Toml::Array}; _First =3D bool; _Rest =3D {Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 2; _Args =3D {Toml::Array}; _First =3D double; _Rest = =3D {bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 3; _Args =3D {Toml::Array}; _First =3D int; _Rest =3D = {double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98constexpr std::__detail::__variant::_Variadic_uni= on<_First, _Rest ...>::_Variadic_union(std::in_place_index_t<_Np>, _Args&& ...) [with = long unsigned int _Np =3D 4; _Args =3D {Toml::Array}; _First =3D std::__cxx11::basic_string; _Rest =3D {int, double, bool, Toml::Array= }]=E2=80=99 at /usr/include/c++/12/variant:391:4, inlined from =E2=80=98void std::_Construct(_Tp*, _Args&& ...) [with _Tp= =3D __detail::__variant::_Variadic_union<__cxx11::basic_string, allocator >, int, double, bool, Toml::Array>; _Arg= s =3D {const in_place_index_t<4>&, Toml::Array}]=E2=80=99 at /usr/include/c++/12/bits/stl_construct.h:119:7, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&):: mutable [= with auto:4 =3D Toml::Array; auto:5 =3D std::integral_constant]=E2=80=99 at /usr/include/c++/12/variant:605:23, inlined from =E2=80=98constexpr _Res std::__invoke_impl(__invoke_other,= _Fn&&, _Args&& ...) [with _Res =3D void; _Fn =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {Toml::Array, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:61:36, inlined from =E2=80=98constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Args =3D {Toml::Array, integral_constant}]=E2=80=99 at /usr/include/c++/12/bits/invoke.h:96:40, inlined from =E2=80=98static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl, std::integer_sequence >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_t= ype =3D std::__detail::__variant::__variant_idx_cookie; _Visitor =3D std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::&&; _Varia= nts =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>&&}; long unsigned i= nt ...__indices =3D {4}]=E2=80=99 at /usr/include/c++/12/variant:1020:17, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1787:1= 05, inlined from =E2=80=98constexpr decltype(auto) std::__do_visit(_Visitor= &&, _Variants&& ...) [with _Result_type =3D __detail::__variant::__variant_idx_cookie; _Visitor =3D __detail::__variant::_Move_ctor_base, allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {variant<__cxx11::basic_string, allocator >, = int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:1729:5, inlined from =E2=80=98constexpr void std::__detail::__variant::__raw_idx_visit(_Visitor&&, _Variants&& ...) [with _Visitor =3D _Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>&&)::; _Variant= s =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}]=E2=80=99 at /usr/include/c++/12/variant:184:44, inlined from =E2=80=98std::__detail::__variant::_Move_ctor_base<, _Types>::_Move_ctor_base(std::__detail::__variant::_Move_ctor_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :600:28, inlined from =E2=80=98std::__detail::__variant::_Copy_assign_base<, _Types>::_Copy_assign_base(std::__detail::__variant::_Copy_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :665:7, inlined from =E2=80=98std::__detail::__variant::_Move_assign_base<, _Types>::_Move_assign_base(std::__detail::__variant::_Move_assign_base<, _Types>&&) [with bool =3D false; _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant= :719:7, inlined from =E2=80=98std::__detail::__variant::_Variant_base<_Types>::_Variant_base(std= ::__detail::__variant::_Variant_base<_Types>&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:750:7, inlined from =E2=80=98std::variant<_Types>::variant(std::variant<_Types= >&&) [with _Types =3D {std::__cxx11::basic_string, std::allocator >, int, double, bool, Toml::Array}]=E2=80=99 at /usr/include/c++/12/variant:1404:7, inlined from =E2=80=98void std::__new_allocator<_Tp>::construct(_Up*, _= Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/new_allocator.h:175:4, inlined from =E2=80=98static void std::allocator_traits >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>]=E2=80=99 at /usr/include/c++/12/bits/alloc_traits.h:516:17, inlined from =E2=80=98std::vector<_Tp, _Alloc>::reference std::vector<_= Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args =3D {std::variant, std::allocator >, int, double, bool, Toml::Array>}; _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/vector.tcc:117:30, inlined from =E2=80=98void std::vector<_Tp, _Alloc>::push_back(value_ty= pe&&) [with _Tp =3D std::variant, std::allocator >, int, double, bool, Toml::Array>; _Alloc =3D std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> >]=E2=80=99 at /usr/include/c++/12/bits/stl_vector.h:1294:21, inlined from =E2=80=98Toml::Array::Array(const std::vector&)=E2= =80=99 at gcc_bug.cpp:19:37: /usr/include/c++/12/bits/stl_vector.h:107:33: warning: =E2=80=98*(std::_Vector_base, std::allocator >, int, double, bool, Toml::Array>, std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> > >::_Vector_impl_data*)((char*)& + offsetof(std::value_type, std::variant, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_assign_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Move_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Copy_ctor_base, std::allocator >, int, double, bool, Toml::Array>::.std::__detail::__variant::_Variant_storage, std::allocator >, int, double, bool, Toml::Array>::_M_u)).std::_Vector_base, std::allocator >, int, double, bool, Toml::Array>, std::allocator, std::allocator >, int, double, bool, Toml::Ar= ray> > >::_Vector_impl_data::_M_end_of_storage=E2=80=99 may be used uninitialized [-Wmaybe-uninitialized] 107 | _M_end_of_storage(__x._M_end_of_storage) | ~~~~^~~~~~~~~~~~~~~~~ gcc_bug.cpp: In constructor =E2=80=98Toml::Array::Array(const std::vector&)=E2=80=99: gcc_bug.cpp:19:37: note: =E2=80=98=E2=80=99 declared here 19 | this->data.push_back(elem); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ COLLECT_GCC_OPTIONS=3D'-v' '-save-temps' '-std=3Dc++17' '-Wall' '-Wextra' '= -O2' '-o' 'gcc_bug' '-shared-libgcc' '-mtune=3Dgeneric' '-march=3Dx86-64' as -v --64 -o gcc_bug.o gcc_bug.s GNU assembler version 2.39 (x86_64-linux-gnu) using BFD version (GNU Binuti= ls for Debian) 2.39 COMPILER_PATH=3D/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux= -gnu/12/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/:/= usr/lib/gcc/x86_64-linux-gnu/ LIBRARY_PATH=3D/usr/lib/gcc/x86_64-linux-gnu/12/:/usr/lib/gcc/x86_64-linux-= gnu/12/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/12/../../..= /../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/us= r/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/12/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS=3D'-v' '-save-temps' '-std=3Dc++17' '-Wall' '-Wextra' '= -O2' '-o' 'gcc_bug' '-shared-libgcc' '-mtune=3Dgeneric' '-march=3Dx86-64' '-dump= dir' 'gcc_bug.' /usr/lib/gcc/x86_64-linux-gnu/12/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/12/liblto_plugin.so -plugin-opt=3D/usr/lib/gcc/x86_64-linux-gnu/12/lto-wrapper -plugin-opt=3D-fresolution=3Dgcc_bug.res -plugin-opt=3D-pass-through=3D-lgc= c_s -plugin-opt=3D-pass-through=3D-lgcc -plugin-opt=3D-pass-through=3D-lc -plugin-opt=3D-pass-through=3D-lgcc_s -plugin-opt=3D-pass-through=3D-lgcc -= -build-id --eh-frame-hdr -m elf_x86_64 --hash-style=3Dgnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -o gcc_bug /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gn= u/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. gcc_bug.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o COLLECT_GCC_OPTIONS=3D'-v' '-save-temps' '-std=3Dc++17' '-Wall' '-Wextra' '= -O2' '-o' 'gcc_bug' '-shared-libgcc' '-mtune=3Dgeneric' '-march=3Dx86-64' '-dump= dir' 'gcc_bug.' ```=