Created attachment 436134 [details, diff] jsoncpp-0.10.6-gcc-6.1.patch cd /var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6_build/src/lib_json && /usr/bin/x86_64-pc-linux-gnu-g++ -DJSON_DLL_BUILD -Djsoncpp_lib_EXPORTS -I/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/include -I/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/../../include -DNDEBUG -O2 -march=native -ggdb -fvar-tracking-assignments -fvar-tracking -pipe -fno-delete-null-pointer-checks -flifetime-dse=1 -Wall -Wshadow -Wextra -pedantic -Wno-long-long -Werror=strict-aliasing -fPIC -o CMakeFiles/jsoncpp_lib.dir/json_writer.cpp.o -c /var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_reader.cpp:47:14:[m[K [01;31m[Kerror: [m[K‘[01m[Kscoped_ptr[m[K’ in namespace ‘[01m[Kstd[m[K’ does not name a template type typedef std::[01;31m[Kscoped_ptr[m[K<CharReader> const CharReaderPtr; [01;31m[K^~~~~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:58:14:[m[K [01;31m[Kerror: [m[K‘[01m[Kscoped_ptr[m[K’ in namespace ‘[01m[Kstd[m[K’ does not name a template type typedef std::[01;31m[Kscoped_ptr[m[K<StreamWriter> const StreamWriterPtr; [01;31m[K^~~~~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_reader.cpp:[m[K In function ‘[01m[Kbool Json::parseFromStream(const Json::CharReader::Factory&, std::istream&, Json::Value*, std::__cxx11::string*)[m[K’: [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_reader.cpp:1820:3:[m[K [01;31m[Kerror: [m[K‘[01m[KCharReaderPtr[m[K’ was not declared in this scope [01;31m[KCharReaderPtr[m[K const reader(fact.newCharReader()); [01;31m[K^~~~~~~~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_reader.cpp:1821:10:[m[K [01;31m[Kerror: [m[K‘[01m[Kreader[m[K’ was not declared in this scope return [01;31m[Kreader[m[K->parse(begin, end, root, errs); [01;31m[K^~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_reader.cpp:1811:32:[m[K [01;35m[Kwarning: [m[Kunused parameter ‘[01m[Kfact[m[K’ [[01;35m[K-Wunused-parameter[m[K] CharReader::Factory const& [01;35m[Kfact[m[K, std::istream& sin, [01;35m[K^~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:[m[K In function ‘[01m[Kstd::__cxx11::string Json::writeString(const Json::StreamWriter::Factory&, const Json::Value&)[m[K’: [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:1179:3:[m[K [01;31m[Kerror: [m[K‘[01m[KStreamWriterPtr[m[K’ was not declared in this scope [01;31m[KStreamWriterPtr[m[K const writer(builder.newStreamWriter()); [01;31m[K^~~~~~~~~~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:1180:3:[m[K [01;31m[Kerror: [m[K‘[01m[Kwriter[m[K’ was not declared in this scope [01;31m[Kwriter[m[K->write(root, &sout); [01;31m[K^~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:1177:54:[m[K [01;35m[Kwarning: [m[Kunused parameter ‘[01m[Kbuilder[m[K’ [[01;35m[K-Wunused-parameter[m[K] std::string writeString(StreamWriter::Factory const& [01;35m[Kbuilder[m[K, Value const& root) { [01;35m[K^~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:[m[K In function ‘[01m[Kstd::ostream& Json::operator<<(std::ostream&, const Json::Value&)[m[K’: [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:1186:3:[m[K [01;31m[Kerror: [m[K‘[01m[KStreamWriterPtr[m[K’ was not declared in this scope [01;31m[KStreamWriterPtr[m[K const writer(builder.newStreamWriter()); [01;31m[K^~~~~~~~~~~~~~~[m[K [01m[K/var/tmp/portage/dev-libs/jsoncpp-0.10.6/work/jsoncpp-0.10.6/src/lib_json/json_writer.cpp:1187:3:[m[K [01;31m[Kerror: [m[K‘[01m[Kwriter[m[K’ was not declared in this scope [01;31m[Kwriter[m[K->write(root, &sout); [01;31m[K^~~~~~[m[K src/lib_json/CMakeFiles/jsoncpp_lib.dir/build.make:110: recipe for target 'src/lib_json/CMakeFiles/jsoncpp_lib.dir/json_writer.cpp.o' failed
Thanks for the patch. Could you submit it in a pull request upstream [1]? [1]:https://github.com/open-source-parsers/jsoncpp
Created attachment 459182 [details, diff] An alternate patch which uses boost:scoped_ptr I am not sure if unique_ptr is equivalent to scoped_ptr. Therefore I've used boost's scoped_ptr
jsoncpp-0.10.6 is based on upstream stale branch 0.y.z which hasn't been updated since June 2016. Current releases based on the master branch are available for 1.7.x and 1.8.x, and don't appear to include these deprecated scoped_ptr constructs so it should build fine with gcc-6. Not sure if jsoncpp-0.x.y is really needed though.
Fixed upstream for "0.y.z" branch: https://github.com/open-source-parsers/jsoncpp/commit/3cde9a99123d340c90fa2b244e05b18497f14028
PR: https://github.com/gentoo/gentoo/pull/4618
this should be fixed in 1.x version