https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108773

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
It is on
  admin_commands = { { "sync trace show name=search,type=CephString,req=false",
"sync trace show [filter_str]: show current multisite tracing information" },
                     { "sync trace history
name=search,type=CephString,req=false", "sync trace history [filter_str]: show
history of multisite tracing information" },
                     { "sync trace active
name=search,type=CephString,req=false", "show active multisite sync entities
information" },
                     { "sync trace active_short
name=search,type=CephString,req=false", "show active multisite sync entities
entries" } };
in int RGWSyncTraceManager::hook_to_admin_command(), where admin_commands is:
  std::list<std::array<std::string, 3> > admin_commands;
Though, -std=c++20:
#include <list>
#include <vector>
#include <string>
#include <initializer_list>

struct S
{
  std::list<std::array<std::string, 3> > admin_commands;
  void foo ();
};

void
S::foo ()
{
  admin_commands = { { "sync trace show name=search,type=CephString,req=false",
"sync trace show [filter_str]: show current multisite tracing information" },
                     { "sync trace history
name=search,type=CephString,req=false", "sync trace history [filter_str]: show
history of multisite tracing information" },
                     { "sync trace active
name=search,type=CephString,req=false", "show active multisite sync entities
information" },
                     { "sync trace active_short
name=search,type=CephString,req=false", "show active multisite sync entities
entries" } };
}
is rejected with
/tmp/1.C: In member function ‘void S::foo()’:
/tmp/1.C:18:137: error: no match for ‘operator=’ (operand types are
‘std::__cxx11::list<std::array<std::__cxx11::basic_string<char>, 3> >’ and
‘<brace-enclosed initializer list>’)
   18 |                      { "sync trace active_short
name=search,type=CephString,req=false", "show active multisite sync entities
entries" } };
      |                                                                        
                                                                ^
In file included from
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/list:66,
                 from /tmp/1.C:1:
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/list.tcc:267:5:
note: candidate: ‘std::__cxx11::list<_Tp, _Alloc>& std::__cxx11::list<_Tp,
_Alloc>::operator=(const std::__cxx11::list<_Tp, _Alloc>&) [with _Tp =
std::array<std::__cxx11::basic_string<char>, 3>; _Alloc =
std::allocator<std::array<std::__cxx11::basic_string<char>, 3> >]’
  267 |     list<_Tp, _Alloc>::
      |     ^~~~~~~~~~~~~~~~~
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/list.tcc:268:27:
note:   no known conversion for argument 1 from ‘<brace-enclosed initializer
list>’ to ‘const
std::__cxx11::list<std::array<std::__cxx11::basic_string<char>, 3> >&’
  268 |     operator=(const list& __x)
      |               ~~~~~~~~~~~~^~~
In file included from
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/list:65:
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/stl_list.h:929:7:
note: candidate: ‘std::__cxx11::list<_Tp, _Alloc>& std::__cxx11::list<_Tp,
_Alloc>::operator=(std::__cxx11::list<_Tp, _Alloc>&&) [with _Tp =
std::array<std::__cxx11::basic_string<char>, 3>; _Alloc =
std::allocator<std::array<std::__cxx11::basic_string<char>, 3> >]’
  929 |       operator=(list&& __x)
      |       ^~~~~~~~
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/stl_list.h:929:24:
note:   no known conversion for argument 1 from ‘<brace-enclosed initializer
list>’ to ‘std::__cxx11::list<std::array<std::__cxx11::basic_string<char>, 3>
>&&’
  929 |       operator=(list&& __x)
      |                 ~~~~~~~^~~
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/stl_list.h:947:7:
note: candidate: ‘std::__cxx11::list<_Tp, _Alloc>& std::__cxx11::list<_Tp,
_Alloc>::operator=(std::initializer_list<_Tp>) [with _Tp =
std::array<std::__cxx11::basic_string<char>, 3>; _Alloc =
std::allocator<std::array<std::__cxx11::basic_string<char>, 3> >]’
  947 |       operator=(initializer_list<value_type> __l)
      |       ^~~~~~~~
/home/jakub/src/gcc/obj18i/usr/local/include/c++/13.0.1/bits/stl_list.h:947:46:
note:   no known conversion for argument 1 from ‘<brace-enclosed initializer
list>’ to ‘std::initializer_list<std::array<std::__cxx11::basic_string<char>,
3> >’
  947 |       operator=(initializer_list<value_type> __l)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~

Reply via email to