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