rapidjson icon indicating copy to clipboard operation
rapidjson copied to clipboard

base class ‘struct rapidjson::internal::BoolType<true>’ has a non-virtual destructor

Open chengshuyi opened this issue 3 years ago • 2 comments

Hi,

i have the following problem when compiling.

#make 
[  1%] Building CXX object example/CMakeFiles/archivertest.dir/archiver/archiver.cpp.o
In file included from /work/rapidjson/include/rapidjson/reader.h:20:0,
                 from /work/rapidjson/include/rapidjson/document.h:20,
                 from /work/rapidjson/example/archiver/archiver.cpp:4:
/work/rapidjson/include/rapidjson/allocators.h: In instantiation of ‘struct rapidjson::internal::IsRefCounted<rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>, void>’:
/work/rapidjson/include/rapidjson/document.h:883:65:   required from ‘rapidjson::GenericValue<Encoding, Allocator>::~GenericValue() [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]’
/work/rapidjson/include/rapidjson/document.h:2511:102:   required from ‘rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::GenericDocument(Allocator*, std::size_t, StackAllocator*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>; StackAllocator = rapidjson::CrtAllocator; std::size_t = long unsigned int]’
/work/rapidjson/example/archiver/archiver.cpp:32:21:   required from here
/work/rapidjson/include/rapidjson/allocators.h:428:12: error: base class ‘struct rapidjson::internal::BoolType<true>’ has a non-virtual destructor [-Werror=effc++]
     struct IsRefCounted<T, typename internal::EnableIfCond<T::kRefCounted>::Type> :
            ^
cc1plus: all warnings being treated as errors
make[2]: *** [example/CMakeFiles/archivertest.dir/archiver/archiver.cpp.o] Error 1
make[1]: *** [example/CMakeFiles/archivertest.dir/all] Error 2
make: *** [all] Error 2

Thanks.

chengshuyi avatar Jun 13 '22 03:06 chengshuyi

Hi! you can try adding #ifdef GNUC RAPIDJSON_DIAG_OFF(effc++) #endif to your allocators.h file, it worked for me :)

BRSADT avatar Jun 23 '22 14:06 BRSADT

add code add_definitions(-w) at CMakeLists.txt

17336 avatar Aug 17 '23 06:08 17336