When using the macro EIGEN_MAKE_ALIGNED_OPERATOR_NEW clang emits tons of warnings in C++14 mode of the form: warning: dynamic exception specifications are deprecated [-Wdeprecated] Eigen3/Eigen/src/Core/util/Memory.h:613:62: note: expanded from macro 'EIGEN_MAKE_ALIGNED_OPERATOR_NEW_NOTHROW' void* operator new(size_t size, const std::nothrow_t&) throw() { \ ^~~~~~~ Since one cannot use compiler pragmas to push/pop these warnings when including Eigen3 headers (one has to do this at every point of use), it would be better if all dynamic exception specifications in Eigen3 would be abstracted behind a macro that can be configured. For example replacing throw() with EIGEN_NO_THROW that is throw() in C++<11 and noexcept(true) in C++>=11. And if there is throw(some exceptions) that should be abstracted by a macro EIGEN_THROWS(...) that is throw(...) in C++<11 and noexcept(false) in C++>=11. Dynamic exception specifications will be removed from the language in C++17, and AFAIK what the compilers will do to retain backwards compatibility is the same thing I stated above (replace trow() with noexcept(true), and throw(...) with noexcept(false)).
Thank you for the detailed report. https://bitbucket.org/eigen/eigen/commits/0def1a78115d/
-- GitLab Migration Automatic Message -- This bug has been migrated to gitlab.com's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.com/libeigen/eigen/issues/1109.