When including CGAL/Polynomial/CORE_Expr_root_stack.h in a header file
that in turn gets included in multiple .cpp files, code from
CORE_Expr_root_stack.h ends up in multiple object files and causes
linking problems:
multiple definition of `CGAL::POLYNOMIAL::operator<<(std::ostream&, CGAL::POLYNOMIAL::CORE_Expr_root_stack const&)'
multiple definition of `CGAL::POLYNOMIAL::internal::operator*(CORE::BigRat const&, CGAL::POLYNOMIAL::internal::CORE_polynomial const&)'
Work around this issue by declaring both operators inline.
bad() implies fail() but std::basic_ios::operator! is actually equivalent
to std::basic_ios::fail(), not bad().
For example,
std::ifstream is(argv[1]);
if (is.bad()) {
is probably wrong because, in case the file does not exist, only the failbit it set,
and not the badbit.
Other example:
double x;
is >> x;
If the stream 'is' does not contains a string that can represent a double,
then failbit is set (and maybe the eofbit if the stream is actually too
short), but not the badbit.
bad() can be used, in case fail() returned true, to discriminate between a
I/O error and a logical error.
See:
http://en.cppreference.com/w/cpp/io/basic_ios/operator_boolhttp://en.cppreference.com/w/cpp/io/ios_base/iostate
fix c++11 issue reported by clang with libc++ stdlib:
ostream no longer has a implicit conversion operator to void*
This behavior is detected using the boost macros
BOOST_NO_EXPLICIT_CONVERSION_OPERATORS (up to 1.50) and
BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS (from 1.51)
Successfully tested in CGAL-4.3-Ic-108 and CGAL-4.3-Ic-106
Approved by the interim release manager
Successfully test in CGAL-4.3-Ic-102
This commit fixes a few issues in the doxygen documentation and in particular
the figure for the generation of latex doc.
Approved by the interim release manager
xplain why this merge is necessary,
this happens if you have an empty line or the text directly after /!*
to find them in the generated documentation, grep for "pre class=\"fragment\""
(a few of them are legitimate however)