Tencent / rapidjson

A fast JSON parser/generator for C++ with both SAX/DOM style API
http://rapidjson.org/
Other
14.22k stars 3.53k forks source link

make compile error #1318

Open Shoaib-Raza opened 6 years ago

Shoaib-Raza commented 6 years ago

Hi, I am compiling the git repository step by step, when I run make command on Terminal it gives error.

I am using GCC version 4.4.7 on Centos 6.5

below is the terminal log:

[  2%] Built target serialize
[  5%] Built target schemavalidator
[  7%] Built target prettyauto
[ 10%] Built target messagereader
[ 13%] Built target lookaheadparser
[ 15%] Built target capitalize
[ 18%] Built target pretty
[ 21%] Built target simpledom
[ 23%] Built target tutorial
[ 26%] Built target simplepullreader
[ 28%] Built target jsonx
[ 31%] Built target condense
[ 34%] Built target filterkey
[ 36%] Built target filterkeydom
[ 39%] Built target simplereader
[ 42%] Built target parsebyparts
[ 44%] Built target simplewriter
[ 44%] Built target examples
[ 48%] Built target archivertest
[ 51%] Built target namespacetest
[ 53%] Built target gtest
[ 56%] Built target gtest_main
[ 57%] Building CXX object test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/algorithm:62,
                 from /DVD/home/core/Desktop/rapidjson/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-port.h:274,
                 from /DVD/home/core/Desktop/rapidjson/rapidjson/thirdparty/gtest/googletest/include/gtest/internal/gtest-internal.h:40,
                 from /DVD/home/core/Desktop/rapidjson/rapidjson/thirdparty/gtest/googletest/include/gtest/gtest.h:58,
                 from /DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/unittest.h:47,
                 from /DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:15:
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h: In function ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Size = long int, _Compare = ValueIntComparer]’:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:5258:   instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:1781:   instantiated from here
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h:608: error: ‘rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, Allocator>&) [with Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]’ is private
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2301: error: within this context
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h: In function ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2193:   instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:5260:   instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:1781:   instantiated from here
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h:608: error: ‘rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, Allocator>&) [with Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]’ is private
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2127: error: within this context
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2193:   instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:5260:   instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:1781:   instantiated from here
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h:608: error: ‘rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, Allocator>&) [with Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]’ is private
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2134: error: within this context
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2193:   instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:5260:   instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:1781:   instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2134: error:   initializing argument 2 of ‘void std::__unguarded_linear_insert(_RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Tp = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h: In function ‘void std::__unguarded_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2194:   instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:5260:   instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = rapidjson::GenericValue<rapidjson::UTF8<char>, rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator> >*, _Compare = ValueIntComparer]’
/DVD/home/core/Desktop/rapidjson/rapidjson/test/unittest/valuetest.cpp:1781:   instantiated from here
/DVD/home/core/Desktop/rapidjson/rapidjson/include/rapidjson/document.h:608: error: ‘rapidjson::GenericValue<Encoding, Allocator>::GenericValue(const rapidjson::GenericValue<Encoding, Allocator>&) [with Encoding = rapidjson::UTF8<char>, Allocator = rapidjson::MemoryPoolAllocator<rapidjson::CrtAllocator>]’ is private
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_algo.h:2161: error: within this context
make[2]: *** [test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o] Error 1
make[1]: *** [test/unittest/CMakeFiles/unittest.dir/all] Error 2
make: *** [all] Error 2
pah commented 6 years ago

Your compiler's std::sort implementation requires explicit copying of (const) values, which is not supported by RapidJSON's GenericValue due to its Move semantics.

The corresponding test is only enabled, if RAPIDJSON_HAS_CXX11_RVALUE_REFS is defined. In C++11, std::sort only requires move support for the types to be sorted. So this looks like a compiler bug to me.

Try using a more recent compiler or disable C++11 on this very old version.