Project

General

Profile

Bug #54279

Updated by Casey Bodley about 2 years ago

NoInitAllocator inherits from std::allocator<__u32>. c++20 removed a lot of deprecated things from std::allocator (see https://en.cppreference.com/w/cpp/memory/allocator). we should probably be specializing std::allocator_traits for NoInitAllocator now, rather than inheriting from std::allocator 

 built with gcc 11.2.1, with c++20 enabled in cmake: 
 <pre><code class="diff"> 
 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt 
 index 1157df00a19..b20e43b6bbb 100644 
 --- a/src/CMakeLists.txt 
 +++ b/src/CMakeLists.txt 
 @@ -211,8 +211,8 @@ if(HAVE_INTEL) 
    endif() 
  endif() 

 -# require c++17 
 -set(CMAKE_CXX_STANDARD 17) 
 +# require c++20 
 +set(CMAKE_CXX_STANDARD 20) 
  set(CMAKE_CXX_EXTENSIONS OFF) 
  set(CMAKE_CXX_STANDARD_REQUIRED ON) 
  set(CMAKE_C_STANDARD 99) 
 </code></pre> 

 example compilation error: 
 <pre> 
 FAILED: src/test/librbd/CMakeFiles/unittest_librbd.dir/test_mock_DeepCopyRequest.cc.o 
 /usr/bin/c++ -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION -DBOOST_ASIO_USE_TS_EXECUTOR_AS_DEFAULT -DHAVE_CONFIG_H -DTEST_LIBRBD_INTERNALS -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE -D__CEPH__ -D__STDC_FORMAT_MACROS -D__linux__ -Iceph/build/src/include -Iceph/src -I/home/cbodley/ceph/build/src/include -I/home/cbodley/ceph/src -isystem ceph/build/include /home/cbodley/ceph/build/include -isystem ceph/src/xxHash /home/cbodley/ceph/src/xxHash -isystem ceph/src/rapidjson/include /home/cbodley/ceph/src/rapidjson/include -isystem ceph/src/fmt/include /home/cbodley/ceph/src/fmt/include -isystem ceph/src/googletest/googlemock/include /home/cbodley/ceph/src/googletest/googlemock/include -isystem ceph/src/googletest/googlemock /home/cbodley/ceph/src/googletest/googlemock -isystem ceph/src/googletest/googletest/include /home/cbodley/ceph/src/googletest/googletest/include -isystem ceph/src/googletest/googletest /home/cbodley/ceph/src/googletest/googletest -g -Og -fPIE -Wall -fno-strict-aliasing -fsigned-char -Wtype-limits -Wignored-qualifiers -Wpointer-arith -Werror=format-security -Winit-self -Wno-unknown-pragmas -Wnon-virtual-dtor -Wno-ignored-qualifiers -ftemplate-depth-1024 -Wpessimizing-move -Wredundant-move -Wstrict-null-sentinel -Woverloaded-virtual -fno-new-ttp-matching -DCEPH_DEBUG_MUTEX -fstack-protector-strong -D_GLIBCXX_ASSERTIONS -fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -std=c++20 -MD -MT src/test/librbd/CMakeFiles/unittest_librbd.dir/test_mock_DeepCopyRequest.cc.o -MF src/test/librbd/CMakeFiles/unittest_librbd.dir/test_mock_DeepCopyRequest.cc.o.d -o src/test/librbd/CMakeFiles/unittest_librbd.dir/test_mock_DeepCopyRequest.cc.o -c ceph/src/test/librbd/test_mock_DeepCopyRequest.cc /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc 
 In file included from /usr/include/c++/11/ext/alloc_traits.h:34, 
                  from /usr/include/c++/11/bits/basic_string.h:40, 
                  from /usr/include/c++/11/string:55, 
                  from ceph/src/include/rbd/librbd.hpp:18, /home/cbodley/ceph/src/include/rbd/librbd.hpp:18, 
                  from ceph/src/test/librbd/test_fixture.h:5, /home/cbodley/ceph/src/test/librbd/test_fixture.h:5, 
                  from ceph/src/test/librbd/test_mock_fixture.h:7, /home/cbodley/ceph/src/test/librbd/test_mock_fixture.h:7, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: 
 /usr/include/c++/11/bits/alloc_traits.h: In substitution of ‘template<class _Alloc, class _Up> using __alloc_rebind = typename std::__allocator_traits_base::__rebind<_Alloc, _Up>::type [with _Alloc = ceph::BitVector<2>::NoInitAllocator; _Up = unsigned int]’: 
 /usr/include/c++/11/bits/alloc_traits.h:213:8:     required by substitution of ‘template<class _Alloc> template<class _Tp> using rebind_alloc = std::__alloc_rebind<_Alloc, _Tp> [with _Tp = unsigned int; _Alloc = ceph::BitVector<2>::NoInitAllocator]’ 
 /usr/include/c++/11/ext/alloc_traits.h:120:65:     required from ‘struct __gnu_cxx::__alloc_traits<ceph::BitVector<2>::NoInitAllocator, unsigned int>::rebind<unsigned int>’ 
 /usr/include/c++/11/bits/stl_vector.h:87:21:     required from ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ 
 /usr/include/c++/11/bits/stl_vector.h:389:11:     required from ‘class std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ 
 ceph/src/common/bit_vector.hpp:242:47: /home/cbodley/ceph/src/common/bit_vector.hpp:242:47:     required from ‘class ceph::BitVector<2>’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 /usr/include/c++/11/bits/alloc_traits.h:79:11: error: no type named ‘type’ in ‘struct std::__allocator_traits_base::__rebind<ceph::BitVector<2>::NoInitAllocator, unsigned int, void>’ 
    79 |       using __alloc_rebind 
       |             ^~~~~~~~~~~~~~ 
 In file included from /usr/include/c++/11/vector:67, 
                  from ceph/src/include/rbd/librbd.hpp:21, /home/cbodley/ceph/src/include/rbd/librbd.hpp:21, 
                  from ceph/src/test/librbd/test_fixture.h:5, /home/cbodley/ceph/src/test/librbd/test_fixture.h:5, 
                  from ceph/src/test/librbd/test_mock_fixture.h:7, /home/cbodley/ceph/src/test/librbd/test_mock_fixture.h:7, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: 
 /usr/include/c++/11/bits/stl_vector.h: In instantiation of ‘class std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’: 
 ceph/src/common/bit_vector.hpp:242:47: /home/cbodley/ceph/src/common/bit_vector.hpp:242:47:     required from ‘class ceph::BitVector<2>’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 /usr/include/c++/11/bits/stl_vector.h:474:20: error: ‘_M_allocate’ has not been declared in ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Base’ 
   474 |         using _Base::_M_allocate; 
       |                      ^~~~~~~~~~~ 
 /usr/include/c++/11/bits/stl_vector.h:475:20: error: ‘_M_deallocate’ has not been declared in ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Base’ 
   475 |         using _Base::_M_deallocate; 
       |                      ^~~~~~~~~~~~~ 
 /usr/include/c++/11/bits/stl_vector.h:477:20: error: ‘_M_get_Tp_allocator’ has not been declared in ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Base’ 
   477 |         using _Base::_M_get_Tp_allocator; 
       |                      ^~~~~~~~~~~~~~~~~~~ 
 In file included from ceph/src/librbd/deep_copy/ImageCopyRequest.h:9, /home/cbodley/ceph/src/librbd/deep_copy/ImageCopyRequest.h:9, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:13: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:13: 
 ceph/src/common/bit_vector.hpp: /home/cbodley/ceph/src/common/bit_vector.hpp: In instantiation of ‘void ceph::BitVector<<anonymous> >::encode_data(ceph::bufferlist&, uint64_t, uint64_t) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list; uint64_t = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:559:3: /home/cbodley/ceph/src/common/bit_vector.hpp:559:3:     required from ‘void ceph::BitVector<<anonymous> >::encode(ceph::bufferlist&) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 ceph/src/common/bit_vector.hpp:354:16: /home/cbodley/ceph/src/common/bit_vector.hpp:354:16: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ and ‘uint64_t’ {aka ‘long unsigned int’}) 
   354 |       m_data_crcs[data_byte_offset / BLOCK_SIZE] = bit.crc32c(0); 
       |       ~~~~~~~~~~~^ 
 ceph/src/common/bit_vector.hpp: /home/cbodley/ceph/src/common/bit_vector.hpp: In instantiation of ‘void ceph::BitVector<<anonymous> >::decode_data(ceph::buffer::v15_2_0::list::const_iterator&, uint64_t) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>; uint64_t = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:575:3: /home/cbodley/ceph/src/common/bit_vector.hpp:575:3:     required from ‘void ceph::BitVector<<anonymous> >::decode(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 ceph/src/common/bit_vector.hpp:388:20: /home/cbodley/ceph/src/common/bit_vector.hpp:388:20: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ and ‘uint64_t’ {aka ‘long unsigned int’}) 
   388 |           m_data_crcs[data_byte_offset / BLOCK_SIZE] != bit.crc32c(0)) { 
       |           ~~~~~~~~~~~^ 
 In file included from /usr/include/c++/11/vector:67, 
                  from ceph/src/include/rbd/librbd.hpp:21, /home/cbodley/ceph/src/include/rbd/librbd.hpp:21, 
                  from ceph/src/test/librbd/test_fixture.h:5, /home/cbodley/ceph/src/test/librbd/test_fixture.h:5, 
                  from ceph/src/test/librbd/test_mock_fixture.h:7, /home/cbodley/ceph/src/test/librbd/test_mock_fixture.h:7, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: 
 /usr/include/c++/11/bits/stl_vector.h: In instantiation of ‘std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned int; _Alloc = ceph::BitVector<2>::NoInitAllocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:434:34: /home/cbodley/ceph/src/common/bit_vector.hpp:434:34:     required from ‘void ceph::BitVector<<anonymous> >::encode_footer(ceph::bufferlist&) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list]’ 
 ceph/src/common/bit_vector.hpp:560:3: /home/cbodley/ceph/src/common/bit_vector.hpp:560:3:     required from ‘void ceph::BitVector<<anonymous> >::encode(ceph::bufferlist&) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 /usr/include/c++/11/bits/stl_vector.h:919:40: error: ‘const struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   919 |         { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 
       |                            ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/stl_vector.h:919:66: error: ‘const struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   919 |         { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); } 
       |                                                      ~~~~~~~~~~~~~~^~~~~~~~ 
 In file included from ceph/src/librbd/deep_copy/ImageCopyRequest.h:9, /home/cbodley/ceph/src/librbd/deep_copy/ImageCopyRequest.h:9, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:13: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:13: 
 ceph/src/common/bit_vector.hpp: /home/cbodley/ceph/src/common/bit_vector.hpp: In instantiation of ‘void ceph::BitVector<<anonymous> >::encode_data_crcs(ceph::bufferlist&, uint64_t, uint64_t) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list; uint64_t = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:436:5: /home/cbodley/ceph/src/common/bit_vector.hpp:436:5:     required from ‘void ceph::BitVector<<anonymous> >::encode_footer(ceph::bufferlist&) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list]’ 
 ceph/src/common/bit_vector.hpp:560:3: /home/cbodley/ceph/src/common/bit_vector.hpp:560:3:     required from ‘void ceph::BitVector<<anonymous> >::encode(ceph::bufferlist&) const [with unsigned char _bit_count = 2; ceph::bufferlist = ceph::buffer::v15_2_0::list]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 ceph/src/common/bit_vector.hpp:502:28: /home/cbodley/ceph/src/common/bit_vector.hpp:502:28: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ and ‘uint64_t’ {aka ‘long unsigned int’}) 
   502 |       __u32 crc = m_data_crcs[crc_index++]; 
       |                   ~~~~~~~~~~~^ 
 ceph/src/common/bit_vector.hpp: /home/cbodley/ceph/src/common/bit_vector.hpp: In instantiation of ‘void ceph::BitVector<<anonymous> >::decode_data_crcs(ceph::buffer::v15_2_0::list::const_iterator&, uint64_t) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>; uint64_t = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:454:5: /home/cbodley/ceph/src/common/bit_vector.hpp:454:5:     required from ‘void ceph::BitVector<<anonymous> >::decode_footer(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:572:3: /home/cbodley/ceph/src/common/bit_vector.hpp:572:3:     required from ‘void ceph::BitVector<<anonymous> >::decode(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 ceph/src/common/bit_vector.hpp:523:16: /home/cbodley/ceph/src/common/bit_vector.hpp:523:16: error: no match for ‘operator[]’ (operand types are ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>’ and ‘uint64_t’ {aka ‘long unsigned int’}) 
   523 |       m_data_crcs[crc_index++] = crc; 
       |       ~~~~~~~~~~~^ 
 In file included from /usr/include/c++/11/vector:67, 
                  from ceph/src/include/rbd/librbd.hpp:21, /home/cbodley/ceph/src/include/rbd/librbd.hpp:21, 
                  from ceph/src/test/librbd/test_fixture.h:5, /home/cbodley/ceph/src/test/librbd/test_fixture.h:5, 
                  from ceph/src/test/librbd/test_mock_fixture.h:7, /home/cbodley/ceph/src/test/librbd/test_mock_fixture.h:7, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: 
 /usr/include/c++/11/bits/stl_vector.h: In instantiation of ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned int; _Alloc = ceph::BitVector<2>::NoInitAllocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’: 
 ceph/src/common/bit_vector.hpp:288:21: /home/cbodley/ceph/src/common/bit_vector.hpp:288:21:     required from ‘void ceph::BitVector<<anonymous> >::resize(uint64_t, bool) [with unsigned char _bit_count = 2; uint64_t = long unsigned int]’ 
 ceph/src/common/bit_vector.hpp:330:9: /home/cbodley/ceph/src/common/bit_vector.hpp:330:9:     required from ‘void ceph::BitVector<<anonymous> >::decode_header(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:565:3: /home/cbodley/ceph/src/common/bit_vector.hpp:565:3:     required from ‘void ceph::BitVector<<anonymous> >::decode(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 /usr/include/c++/11/bits/stl_vector.h:942:41: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   942 |             _M_erase_at_end(this->_M_impl._M_start + __new_size); 
       |                             ~~~~~~~~~~~~~~^~~~~~~~ 
 In file included from /usr/include/c++/11/vector:72, 
                  from ceph/src/include/rbd/librbd.hpp:21, /home/cbodley/ceph/src/include/rbd/librbd.hpp:21, 
                  from ceph/src/test/librbd/test_fixture.h:5, /home/cbodley/ceph/src/test/librbd/test_fixture.h:5, 
                  from ceph/src/test/librbd/test_mock_fixture.h:7, /home/cbodley/ceph/src/test/librbd/test_mock_fixture.h:7, 
                  from ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: /home/cbodley/ceph/src/test/librbd/test_mock_DeepCopyRequest.cc:4: 
 /usr/include/c++/11/bits/vector.tcc: In instantiation of ‘void std::vector<_Tp, _Alloc>::_M_default_append(std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned int; _Alloc = ceph::BitVector<2>::NoInitAllocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’: 
 /usr/include/c++/11/bits/stl_vector.h:940:4:     required from ‘void std::vector<_Tp, _Alloc>::resize(std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned int; _Alloc = ceph::BitVector<2>::NoInitAllocator; std::vector<_Tp, _Alloc>::size_type = long unsigned int]’ 
 ceph/src/common/bit_vector.hpp:288:21: /home/cbodley/ceph/src/common/bit_vector.hpp:288:21:     required from ‘void ceph::BitVector<<anonymous> >::resize(uint64_t, bool) [with unsigned char _bit_count = 2; uint64_t = long unsigned int]’ 
 ceph/src/common/bit_vector.hpp:330:9: /home/cbodley/ceph/src/common/bit_vector.hpp:330:9:     required from ‘void ceph::BitVector<<anonymous> >::decode_header(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:565:3: /home/cbodley/ceph/src/common/bit_vector.hpp:565:3:     required from ‘void ceph::BitVector<<anonymous> >::decode(ceph::buffer::v15_2_0::list::const_iterator&) [with unsigned char _bit_count = 2; ceph::buffer::v15_2_0::list::const_iterator = ceph::buffer::v15_2_0::list::iterator_impl<true>]’ 
 ceph/src/common/bit_vector.hpp:641:1: /home/cbodley/ceph/src/common/bit_vector.hpp:641:1:     required from here 
 /usr/include/c++/11/bits/vector.tcc:617:56: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_end_of_storage’ 
   617 |             size_type __navail = size_type(this->_M_impl._M_end_of_storage 
       |                                            ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:618:58: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   618 |                                            - this->_M_impl._M_finish); 
       |                                              ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:626:29: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   626 |                 this->_M_impl._M_finish = 
       |                 ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:627:64: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   627 |                   std::__uninitialized_default_n_a(this->_M_impl._M_finish, 
       |                                                    ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:628:74: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   628 |                                                    __n, _M_get_Tp_allocator()); 
       |                                                         ~~~~~~~~~~~~~~~~~~~^~ 
       |                                                         get_allocator 
 /usr/include/c++/11/bits/vector.tcc:636:48:     in ‘constexpr’ expansion of ‘std::vector<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_S_use_relocate()’ 
 /usr/include/c++/11/bits/vector.tcc:636:15: error: ‘constexpr’ call flows off the end of the function 
   636 |                 if _GLIBCXX17_CONSTEXPR (_S_use_relocate()) 
       |                 ^~ 
 /usr/include/c++/11/bits/vector.tcc:641:55: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   641 |                                 __n, _M_get_Tp_allocator()); 
       |                                      ~~~~~~~~~~~~~~~~~~~^~ 
       |                                      get_allocator 
 /usr/include/c++/11/bits/vector.tcc:645:36: error: ‘_M_deallocate’ was not declared in this scope; did you mean ‘fallocate’? 
   645 |                         _M_deallocate(__new_start, __len); 
       |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ 
       |                         fallocate 
 /usr/include/c++/11/bits/vector.tcc:648:45: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   648 |                     _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                 ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:648:69: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   648 |                     _S_relocate(this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                                         ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:649:63: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   649 |                                 __new_start, _M_get_Tp_allocator()); 
       |                                              ~~~~~~~~~~~~~~~~~~~^~ 
       |                                              get_allocator 
 /usr/include/c++/11/bits/vector.tcc:657:55: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   657 |                                 __n, _M_get_Tp_allocator()); 
       |                                      ~~~~~~~~~~~~~~~~~~~^~ 
       |                                      get_allocator 
 /usr/include/c++/11/bits/vector.tcc:660:45: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   660 |                                 this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                 ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:660:69: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   660 |                                 this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                                         ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:667:58: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   667 |                                         _M_get_Tp_allocator()); 
       |                                         ~~~~~~~~~~~~~~~~~~~^~ 
       |                                         get_allocator 
 /usr/include/c++/11/bits/vector.tcc:668:36: error: ‘_M_deallocate’ was not declared in this scope; did you mean ‘fallocate’? 
   668 |                         _M_deallocate(__new_start, __len); 
       |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ 
       |                         fallocate 
 /usr/include/c++/11/bits/vector.tcc:671:47: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   671 |                     std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                   ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:671:71: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   671 |                     std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, 
       |                                                           ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:672:52: error: ‘_M_get_Tp_allocator’ was not declared in this scope; did you mean ‘get_allocator’? 
   672 |                                   _M_get_Tp_allocator()); 
       |                                   ~~~~~~~~~~~~~~~~~~~^~ 
       |                                   get_allocator 
 /usr/include/c++/11/bits/vector.tcc:675:43: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   675 |                 _M_deallocate(this->_M_impl._M_start, 
       |                               ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:676:43: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_end_of_storage’ 
   676 |                               this->_M_impl._M_end_of_storage 
       |                               ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:677:45: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   677 |                               - this->_M_impl._M_start); 
       |                                 ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:675:28: error: ‘_M_deallocate’ was not declared in this scope; did you mean ‘fallocate’? 
   675 |                 _M_deallocate(this->_M_impl._M_start, 
       |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ 
   676 |                               this->_M_impl._M_end_of_storage 
       |                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
   677 |                               - this->_M_impl._M_start); 
       |                               ~~~~~~~~~~~~~~~~~~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:678:29: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_start’ 
   678 |                 this->_M_impl._M_start = __new_start; 
       |                 ~~~~~~~~~~~~~~^~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:679:29: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_finish’ 
   679 |                 this->_M_impl._M_finish = __new_start + __size + __n; 
       |                 ~~~~~~~~~~~~~~^~~~~~~~~ 
 /usr/include/c++/11/bits/vector.tcc:680:29: error: ‘struct std::_Vector_base<unsigned int, ceph::BitVector<2>::NoInitAllocator>::_Vector_impl’ has no member named ‘_M_end_of_storage’ 
   680 |                 this->_M_impl._M_end_of_storage = __new_start + __len; 
       |                 ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ 
 </pre>

Back