Hi,
I'm trying to compile my software that optionally uses CLN, but it seems
that some constructs in the CLN library are offensive to the C++17
standard, for instance:
- mixing of class and struct for the same object:
In file included from /Users/spoel/tools/include/cln/cln.h:27:
/Users/spoel/tools/include/cln/string.h:28:9: error: class 'cl_string'
was previously declared as a struct; this is valid, but may result in
linker errors under the Microsoft C++ ABI [-Werror,-Wmismatched-tags]
28 | friend class cl_string;
| ^
/Users/spoel/tools/include/cln/string.h:13:8: note: previous use is here
13 | struct cl_string;
| ^
- invalid void * casts:
In file included from /Users/spoel/tools/include/cln/cln.h:110:
/Users/spoel/tools/include/cln/GV_complex.h:49:15: error: cast from
'void (*)(std::ostream &, const cl_print_flags &, const cl_N &)' (aka
'void (*)(basic_ostream<char> &, const cln::cl_print_flags &, const
cln::cl_N &)') to 'void (*)(std::ostream &, const cl_print_flags &,
const cl_number &)' (aka 'void (*)(basic_ostream<char> &, const
cln::cl_print_flags &, const cln::cl_number &)') converts to
incompatible function type [-Werror,-Wcast-function-type-mismatch]
49 | (void (*) (std::ostream&, const
cl_print_flags&, const cl_number&))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 | (void (*) (std::ostream&, const
cl_print_flags&, const cl_N&))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 | &print_complex,
| ~~~~~~~~~~~~~~
Unless I am doing something wrong, it seems these issues should be
fixed, and I would be happy to help update the code by sending a patch.
It would be even easier if the code was hosted on github but that is
another step of course.
--
David van der Spoel, Ph.D.,
Professor of Computational Molecular Biophysics
Uppsala University.
http://virtualchemistry.org