-
Notifications
You must be signed in to change notification settings - Fork 142
Closed
Description
When trying to compile the projects with GCC 15.2.0, multiple similar warnings (in my example they are errors due to -Wall -Werror
) would occur:
/usr/lib/ccache/c++ -I/build/reflect-cpp-0.20.0+ds/PUBLIC -I/build/reflect-cpp-0.20.0+ds/include -I/build/reflect-cpp-0.20.0+ds/include/rfl/thirdparty -I/build/reflect-cpp-0.20.0+ds/obj-x86_64-linux-gnu/include -isystem //include -isystem /usr/include/bson-2.1.0 -g -O2 -ffile-prefix-map=/build/reflect-cpp-0.20.0+ds=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -O3 -Wall -Werror -ggdb -ftemplate-backtrace-limit=0 -std=gnu++20 -DTOML_HEADER_ONLY=0 -DTOML_SHARED_LIB=1 -DGTEST_HAS_PTHREAD=1 -Winvalid-pch -include /build/reflect-cpp-0.20.0+ds/obj-x86_64-linux-gnu/tests/json/CMakeFiles/reflect-cpp-json-tests.dir/cmake_pch.hxx -MD -MT tests/json/CMakeFiles/reflect-cpp-json-tests.dir/test_add_struct_name.cpp.o -MF tests/json/CMakeFiles/reflect-cpp-json-tests.dir/test_add_struct_name.cpp.o.d -o tests/json/CMakeFiles/reflect-cpp-json-tests.dir/test_add_struct_name.cpp.o -c /build/reflect-cpp-0.20.0+ds/tests/json/test_add_struct_name.cpp
In file included from /usr/include/c++/15/string:56,
from /build/reflect-cpp-0.20.0+ds/include/rfl/Literal.hpp:7,
from /build/reflect-cpp-0.20.0+ds/include/rfl/Field.hpp:10,
from /build/reflect-cpp-0.20.0+ds/include/rfl/AddStructName.hpp:6,
from /build/reflect-cpp-0.20.0+ds/include/rfl.hpp:10,
from /build/reflect-cpp-0.20.0+ds/obj-x86_64-linux-gnu/tests/json/CMakeFiles/reflect-cpp-json-tests.dir/cmake_pch.hxx:5,
from <command-line>:
In member function ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’,
inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::length() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/basic_string.h:1176:20,
inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/basic_string.h:617:20,
inlined from ‘constexpr rfl::Error::Error(const rfl::Error&)’ at /build/reflect-cpp-0.20.0+ds/include/rfl/Result.hpp:25:3,
inlined from ‘constexpr void std::_Construct(_Tp*, _Args&& ...) [with _Tp = rfl::Error; _Args = {const rfl::Error&}]’ at /usr/include/c++/15/bits/stl_construct.h:133:7,
inlined from ‘constexpr void std::_Optional_payload_base<_Tp>::_M_construct(_Args&& ...) [with _Args = {const rfl::Error&}; _Tp = rfl::Error]’ at /usr/include/c++/15/optional:298:19,
inlined from ‘constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base(bool, const std::_Optional_payload_base<_Tp>&) [with _Tp = rfl::Error]’ at /usr/include/c++/15/optional:144:22,
inlined from ‘constexpr std::_Optional_payload_base<_Tp>::_Optional_payload_base(bool, const std::_Optional_payload_base<_Tp>&) [with _Tp = rfl::Error]’ at /usr/include/c++/15/optional:140:7,
inlined from ‘constexpr std::_Optional_payload<rfl::Error, true, false, false>::_Optional_payload(bool, const std::_Optional_payload_base<rfl::Error>&) [inherited from std::_Optional_payload_base<rfl::Error>]’ at /usr/include/c++/15/optional:419:42,
inlined from ‘constexpr std::_Optional_payload<rfl::Error, false, false, false>::_Optional_payload(bool, const std::_Optional_payload_base<rfl::Error>&) [inherited from std::_Optional_payload_base<rfl::Error>]’ at /usr/include/c++/15/optional:453:57,
inlined from ‘constexpr std::_Optional_base<_Tp, <anonymous>, <anonymous> >::_Optional_base(const std::_Optional_base<_Tp, <anonymous>, <anonymous> >&) [with _Tp = rfl::Error; bool <anonymous> = false; bool <anonymous> = false]’ at /usr/include/c++/15/optional:513:9,
inlined from ‘constexpr std::optional<rfl::Error>::optional(const std::optional<rfl::Error>&)’ at /usr/include/c++/15/optional:778:11,
inlined from ‘constexpr std::pair<_T1, _T2>::pair(_U1&&, _U2&&) [with _U1 = std::array<bool, 8>&; _U2 = std::optional<rfl::Error>&; _T1 = std::array<bool, 8>; _T2 = std::optional<rfl::Error>]’ at /usr/include/c++/15/bits/stl_pair.h:464:35,
inlined from ‘constexpr std::pair<typename std::__strip_reference_wrapper<typename std::decay<_Tp>::type>::__type, typename std::__strip_reference_wrapper<typename std::decay<_Tp2>::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = array<bool, 8>&; _T2 = optional<rfl::Error>&]’ at /usr/include/c++/15/bits/stl_pair.h:1169:72,
inlined from ‘static std::pair<std::array<bool, rfl::NamedTuple<FieldTypes ...>::size()>, std::optional<rfl::Error> > rfl::parsing::NamedTupleParser<R, W, _ignore_empty_containers, _all_required, _no_field_names, ProcessorsType, FieldTypes>::read_object_or_array(const R&, const InputObjectOrArrayType&, NamedTupleType*) [with R = rfl::json::Reader; W = rfl::json::Writer; bool _ignore_empty_containers = false; bool _all_required = false; bool _no_field_names = false; ProcessorsType = rfl::Processors<rfl::AddStructName<rfl::internal::StringLiteral<5>{std::array<char, 5>{"type"}}> >; FieldTypes = {rfl::Field<rfl::internal::StringLiteral<5>{std::array<char, 5>{"type"}}, rfl::Literal<rfl::internal::StringLiteral<7>{std::array<char, 7>{"Person"}}> >, rfl::Field<rfl::internal::StringLiteral<10>{std::array<char, 10>{"firstName"}}, rfl::Rename<rfl::internal::StringLiteral<10>{std::array<char, 10>{"firstName"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"lastName"}}, rfl::Rename<rfl::internal::StringLiteral<9>{std::array<char, 9>{"lastName"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*>, rfl::Field<rfl::internal::StringLiteral<5>{std::array<char, 5>{"town"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"birthday"}}, rfl::Timestamp<rfl::internal::StringLiteral<9>{std::array<char, 9>{"%Y-%m-%d"}}>*>, rfl::Field<rfl::internal::StringLiteral<4>{std::array<char, 4>{"age"}}, rfl::Validator<unsigned int, rfl::Minimum<0>, rfl::Maximum<130> >*>, rfl::Field<rfl::internal::StringLiteral<6>{std::array<char, 6>{"email"}}, rfl::Validator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, rfl::PatternValidator<rfl::internal::StringLiteral<51>{std::array<char, 51>{"^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"}}, rfl::internal::StringLiteral<6>{std::array<char, 6>{"Email"}}> >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"children"}}, std::vector<test_add_struct_name::Person, std::allocator<test_add_struct_name::Person> >*>}]’ at /build/reflect-cpp-0.20.0+ds/include/rfl/parsing/NamedTupleParser.hpp:315:37:
/usr/include/c++/15/bits/basic_string.h:1165:19: error: ‘*(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)((char*)&err + offsetof(std::optional<rfl::Error>,std::optional<rfl::Error>::<unnamed>.std::_Optional_base<rfl::Error, false, false>::_M_payload.std::_Optional_payload<rfl::Error, false, false, false>::<unnamed>.std::_Optional_payload<rfl::Error, true, false, false>::<unnamed>.std::_Optional_payload_base<rfl::Error>::_M_payload)).std::__cxx11::basic_string<char>::_M_string_length’ may be used uninitialized [-Werror=maybe-uninitialized]
1165 | size_type __sz = _M_string_length;
| ^~~~
In file included from /build/reflect-cpp-0.20.0+ds/include/rfl/parsing/Parser_named_tuple.hpp:4,
from /build/reflect-cpp-0.20.0+ds/include/rfl/parsing/Parser.hpp:13,
from /build/reflect-cpp-0.20.0+ds/include/rfl/generic/Parser.hpp:4,
from /build/reflect-cpp-0.20.0+ds/include/rfl/generic/read.hpp:10,
from /build/reflect-cpp-0.20.0+ds/include/rfl/from_generic.hpp:5,
from /build/reflect-cpp-0.20.0+ds/include/rfl.hpp:63:
/build/reflect-cpp-0.20.0+ds/include/rfl/parsing/NamedTupleParser.hpp: In static member function ‘static std::pair<std::array<bool, rfl::NamedTuple<FieldTypes ...>::size()>, std::optional<rfl::Error> > rfl::parsing::NamedTupleParser<R, W, _ignore_empty_containers, _all_required, _no_field_names, ProcessorsType, FieldTypes>::read_object_or_array(const R&, const InputObjectOrArrayType&, NamedTupleType*) [with R = rfl::json::Reader; W = rfl::json::Writer; bool _ignore_empty_containers = false; bool _all_required = false; bool _no_field_names = false; ProcessorsType = rfl::Processors<rfl::AddStructName<rfl::internal::StringLiteral<5>{std::array<char, 5>{"type"}}> >; FieldTypes = {rfl::Field<rfl::internal::StringLiteral<5>{std::array<char, 5>{"type"}}, rfl::Literal<rfl::internal::StringLiteral<7>{std::array<char, 7>{"Person"}}> >, rfl::Field<rfl::internal::StringLiteral<10>{std::array<char, 10>{"firstName"}}, rfl::Rename<rfl::internal::StringLiteral<10>{std::array<char, 10>{"firstName"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"lastName"}}, rfl::Rename<rfl::internal::StringLiteral<9>{std::array<char, 9>{"lastName"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >*>, rfl::Field<rfl::internal::StringLiteral<5>{std::array<char, 5>{"town"}}, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"birthday"}}, rfl::Timestamp<rfl::internal::StringLiteral<9>{std::array<char, 9>{"%Y-%m-%d"}}>*>, rfl::Field<rfl::internal::StringLiteral<4>{std::array<char, 4>{"age"}}, rfl::Validator<unsigned int, rfl::Minimum<0>, rfl::Maximum<130> >*>, rfl::Field<rfl::internal::StringLiteral<6>{std::array<char, 6>{"email"}}, rfl::Validator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, rfl::PatternValidator<rfl::internal::StringLiteral<51>{std::array<char, 51>{"^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"}}, rfl::internal::StringLiteral<6>{std::array<char, 6>{"Email"}}> >*>, rfl::Field<rfl::internal::StringLiteral<9>{std::array<char, 9>{"children"}}, std::vector<test_add_struct_name::Person, std::allocator<test_add_struct_name::Person> >*>}]’:
/build/reflect-cpp-0.20.0+ds/include/rfl/parsing/NamedTupleParser.hpp:308:26: note: ‘err’ declared here
308 | std::optional<Error> err;
| ^~~
cc1plus: all warnings being treated as errors
Please help to investigate whether this is yet another false warning (so I should add -Wno-maybe-uninitialized
), or if there is actually a use-before-def.
Metadata
Metadata
Assignees
Labels
No labels