libxml++/io/istreamparserinputbuffer.cc:42:12: error: no viable conversion from returned value of type 'std::istream' (aka 'basic_istream<char>') to function return type 'bool' return input_; ^~~~~~ libxml++/io/ostreamoutputbuffer.cc:32:12: error: no viable conversion from returned value of type 'std::ostream' (aka 'basic_ostream<char>') to function return type 'bool' return output_; ^~~~~~~ libxml++/io/ostreamoutputbuffer.cc:39:12: error: no viable conversion from returned value of type 'std::ostream' (aka 'basic_ostream<char>') to function return type 'bool' return output_; ^~~~~~~ build log: http://sprunge.us/cbjD bisect first bad: https://github.com/llvm-mirror/libcxx/commit/3a1b90a866b6
It seems the correct workaround is to explicitly convert the istreams/ostreams to bool, e.g. something like: return bool(input_);
Btw, does this port build its C++ sources with -std=c++11?
(In reply to Dimitry Andric from comment #1) > return bool(input_); Thanks. It builds fine with such a change. (In reply to Dimitry Andric from comment #2) > does this port build its C++ sources with -std=c++11? No. And -std=c++11 alone doesn't fix the issue here. With bool(input_) fix it builds fine with -std=c++11 as well.
A commit references this bug: Author: jbeich Date: Fri Jan 13 18:23:39 UTC 2017 New revision: 431411 URL: https://svnweb.freebsd.org/changeset/ports/431411 Log: textproc/libxml++26: unbreak build with libc++ 4.0 libxml++/io/istreamparserinputbuffer.cc:42:12: error: no viable conversion from returned value of type 'std::istream' (aka 'basic_istream<char>') to function return type 'bool' return input_; ^~~~~~ libxml++/io/ostreamoutputbuffer.cc:32:12: error: no viable conversion from returned value of type 'std::ostream' (aka 'basic_ostream<char>') to function return type 'bool' return output_; ^~~~~~~ libxml++/io/ostreamoutputbuffer.cc:39:12: error: no viable conversion from returned value of type 'std::ostream' (aka 'basic_ostream<char>') to function return type 'bool' return output_; ^~~~~~~ PR: 216034 Regressed by: https://github.com/llvm-mirror/libcxx/commit/3a1b90a866b6 Submitted by: dim Approved by: portmgr blanket Changes: head/textproc/libxml++26/files/ head/textproc/libxml++26/files/patch-libxml++_io_istreamparserinputbuffer.cc head/textproc/libxml++26/files/patch-libxml++_io_ostreamoutputbuffer.cc
A commit references this bug: Author: jbeich Date: Fri Jan 13 18:40:50 UTC 2017 New revision: 431412 URL: https://svnweb.freebsd.org/changeset/ports/431412 Log: textproc/libxml++26: replace r431411 with upstream fix PR: 216034 Changes: head/textproc/libxml++26/Makefile head/textproc/libxml++26/files/patch-c++11 head/textproc/libxml++26/files/patch-libxml++_io_istreamparserinputbuffer.cc head/textproc/libxml++26/files/patch-libxml++_io_ostreamoutputbuffer.cc
Note that the upstream author has reverted the commit causing this here: http://llvm.org/viewvc/llvm-project?rev=291921&view=rev and has also merged it to the 4.0 branch. I will import the upstream branch into the projects/clang400-import branch soon.
libstdc++ from lang/gcc6 fails similar to comment 0, so I'm not going to back the fix out. However, DragonFly folks are still on GCC 5.x which is unaffected. libxml++/io/istreamparserinputbuffer.cc: In member function 'virtual bool xmlpp::IStreamParserInputBuffer::do_close()': libxml++/io/istreamparserinputbuffer.cc:42:12: error: cannot convert 'std::istream {aka std::basic_istream<char>}' to 'bool' in return return input_; ^~~~~~ libxml++/io/ostreamoutputbuffer.cc: In member function 'virtual bool xmlpp::OStreamOutputBuffer::do_write(const char*, int)': libxml++/io/ostreamoutputbuffer.cc:32:12: error: cannot convert 'std::ostream {aka std::basic_ostream<char>}' to 'bool' in return return output_; ^~~~~~~ libxml++/io/ostreamoutputbuffer.cc: In member function 'virtual bool xmlpp::OStreamOutputBuffer::do_close()': libxml++/io/ostreamoutputbuffer.cc:39:12: error: cannot convert 'std::ostream {aka std::basic_ostream<char>}' to 'bool' in return return output_; ^~~~~~~