MT#62181 add string assignment operator

Fixes the following brief compiler warning:

In file included from /usr/include/c++/15/string:56,
                 from src/XmlRpcServer.h:13,
                 from src/XmlRpcServer.cpp:3:
In member function ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::pointer std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_data() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’,
    inlined from ‘constexpr bool std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_is_local() const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/basic_string.h:280:13,
    inlined from ‘constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_dispose() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/basic_string.h:298:18,
    inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::~basic_string() [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/15/bits/basic_string.h:896:19,
    inlined from ‘constexpr void std::destroy_at(_Tp*) [with _Tp = __cxx11::basic_string<char>]’ at /usr/include/c++/15/bits/stl_construct.h:88:18,
    inlined from ‘constexpr void std::_Destroy(_Tp*) [with _Tp = __cxx11::basic_string<char>]’ at /usr/include/c++/15/bits/stl_construct.h:164:22,
    inlined from ‘std::__detail::__variant::_Variant_storage<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_reset()::<lambda(auto:7&&)> mutable [with auto:7 = std::__cxx11::basic_string<char>&]’ at /usr/include/c++/15/variant:493:19,
    inlined from ‘constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = void; _Fn = __detail::__variant::_Variant_storage<false, monostate, bool, long int, double, __cxx11::basic_string<char, char_traits<char>, allocator<char> >, tm, vector<char, allocator<char> >, vector<XmlRpc::XmlRpcValue, allocator<XmlRpc::XmlRpcValue> >, map<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue, less<__cxx11::basic_string<char, char_traits<char>, allocator<char> > >, allocator<pair<const __cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_reset()::<lambda(auto:7&&)>; _Args = {__cxx11::basic_string<char, char_traits<char>, allocator<char> >&}]’ at /usr/include/c++/15/bits/invoke.h:63:36,
    inlined from ‘constexpr std::enable_if_t<((bool)is_invocable_r_v<_Res, _Callable, _Args ...>), _Res> std::__invoke_r(_Callable&&, _Args&& ...) [with _Res = void; _Callable = __detail::__variant::_Variant_storage<false, monostate, bool, long int, double, __cxx11::basic_string<char, char_traits<char>, allocator<char> >, tm, vector<char, allocator<char> >, vector<XmlRpc::XmlRpcValue, allocator<XmlRpc::XmlRpcValue> >, map<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue, less<__cxx11::basic_string<char, char_traits<char>, allocator<char> > >, allocator<pair<const __cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_reset()::<lambda(auto:7&&)>; _Args = {__cxx11::basic_string<char, char_traits<char>, allocator<char> >&}]’ at /usr/include/c++/15/bits/invoke.h:113:28,
    inlined from ‘static constexpr decltype(auto) std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<_Result_type (*)(_Visitor, _Variants ...)>, std::integer_sequence<long unsigned int, __indices ...> >::__visit_invoke(_Visitor&&, _Variants ...) [with _Result_type = void; _Visitor = std::__detail::__variant::_Variant_storage<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_reset()::<lambda(auto:7&&)>&&; _Variants = {std::variant<std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >&}; long unsigned int ...__indices = {4}]’ at /usr/include/c++/15/variant:1059:40,
    inlined from ‘constexpr decltype(auto) std::__do_visit(_Visitor&&, _Variants&& ...) [with _Result_type = void; _Visitor = __detail::__variant::_Variant_storage<false, monostate, bool, long int, double, __cxx11::basic_string<char, char_traits<char>, allocator<char> >, tm, vector<char, allocator<char> >, vector<XmlRpc::XmlRpcValue, allocator<XmlRpc::XmlRpcValue> >, map<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue, less<__cxx11::basic_string<char, char_traits<char>, allocator<char> > >, allocator<pair<const __cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_reset()::<lambda(auto:7&&)>; _Variants = {variant<monostate, bool, long int, double, __cxx11::basic_string<char, char_traits<char>, allocator<char> >, tm, vector<char, allocator<char> >, vector<XmlRpc::XmlRpcValue, allocator<XmlRpc::XmlRpcValue> >, map<__cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue, less<__cxx11::basic_string<char, char_traits<char>, allocator<char> > >, allocator<pair<const __cxx11::basic_string<char, char_traits<char>, allocator<char> >, XmlRpc::XmlRpcValue> > > >&}]’ at /usr/include/c++/15/variant:1895:5,
    inlined from ‘constexpr void std::__detail::__variant::_Variant_storage<false, _Types ...>::_M_reset() [with _Types = {std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > >}]’ at /usr/include/c++/15/variant:491:23,
    inlined from ‘constexpr void std::__detail::__variant::__emplace(_Variant_storage<_Triv, _Types ...>&, _Args&& ...) [with long unsigned int _Np = 4; bool _Triv = false; _Types = {std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > >}; _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}]’ at /usr/include/c++/15/variant:560:19,
    inlined from ‘constexpr std::enable_if_t<((bool)is_constructible_v<std::variant<_Types>::__to_type<_Np, typename std::enable_if<(_Np < sizeof... (_Types)), void>::type>, _Args ...>), std::variant<_Types>::__to_type<_Np>&> std::variant<_Types>::emplace(_Args&& ...) [with long unsigned int _Np = 4; _Args = {std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >}; _Types = {std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > >}]’ at /usr/include/c++/15/variant:1604:33,
    inlined from ‘constexpr std::enable_if_t<((bool)((__exactly_once<std::variant<_Types>::__accepted_type<_Tp&&, typename std::enable_if<__not_self<_Tp&&>, void>::type> > && is_constructible_v<std::variant<_Types>::__accepted_type<_Tp&&, typename std::enable_if<__not_self<_Tp&&>, void>::type>, _Tp>) && is_assignable_v<std::variant<_Types>::__accepted_type<_Tp&&, typename std::enable_if<__not_self<_Tp&&>, void>::type>&, _Tp>)), std::variant<_Types>&> std::variant<_Types>::operator=(_Tp&&) [with _Tp = const std::__cxx11::basic_string<char>&; _Types = {std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > >}]’ at /usr/include/c++/15/variant:1566:25,
    inlined from ‘XmlRpc::XmlRpcValue::XmlRpcValue(const std::string&)’ at src/XmlRpcValue.h:65:16,
    inlined from ‘void XmlRpc::XmlRpcServer::listMethods(XmlRpc::XmlRpcValue&)’ at src/XmlRpcServer.cpp:318:15:
/usr/include/c++/15/bits/basic_string.h:239:28: warning: ‘*(const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*)((char*)&<unnamed> + offsetof(const XmlRpc::XmlRpcValue, XmlRpc::XmlRpcValue::_value.std::variant<std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Variant_base<std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Move_assign_base<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Copy_assign_base<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Move_ctor_base<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Copy_ctor_base<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::<unnamed>.std::__detail::__variant::_Variant_storage<false, std::monostate, bool, long int, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, tm, std::vector<char, std::allocator<char> >, std::vector<XmlRpc::XmlRpcValue, std::allocator<XmlRpc::XmlRpcValue> >, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, XmlRpc::XmlRpcValue> > > >::_M_u)).std::__cxx11::basic_string<char>::_M_dataplus.std::__cxx11::basic_string<char>::_Alloc_hider::_M_p’ may be used uninitialized [-Wmaybe-uninitialized]
  239 |       { return _M_dataplus._M_p; }
      |                            ^~~~
src/XmlRpcServer.cpp: In member function ‘void XmlRpc::XmlRpcServer::listMethods(XmlRpc::XmlRpcValue&)’:
src/XmlRpcServer.cpp:318:15: note: ‘<anonymous>’ declared here
  318 |   result[i] = MULTICALL;
      |               ^~~~~~~~~

Change-Id: Ie587b65ec0cfcc7ef9049dd526d9298e72af8aa4
mr26.0
Richard Fuchs 5 months ago
parent d684e8ca9d
commit d1553a761e

@ -112,6 +112,9 @@ namespace XmlRpc {
//! Assign a string to this XmlRpcValue.
XmlRpcValue& operator=(const char* rhs) { return operator=(XmlRpcValue(std::string(rhs))); }
//! Assign a string to this XmlRpcValue.
XmlRpcValue& operator=(const std::string& rhs) { return operator=(XmlRpcValue(rhs)); }
//! Tests two XmlRpcValues for equality
bool operator==(XmlRpcValue const& other) const = default;

Loading…
Cancel
Save