Provide EIGEN_OVERRIDE and EIGEN_FINAL macros to mark virtual function overrides

This commit is contained in:
Christoph Hertzberg
2018-09-24 18:01:17 +02:00
parent 626942d9dd
commit 2c083ace3e
3 changed files with 25 additions and 7 deletions

View File

@@ -638,6 +638,15 @@
#endif
#endif
#ifndef EIGEN_HAS_CXX11_OVERRIDE_FINAL
#if EIGEN_MAX_CPP_VER>=11 && \
(__cplusplus >= 201103L || EIGEN_COMP_MSVC >= 1700)
#define EIGEN_HAS_CXX11_OVERRIDE_FINAL 1
#else
#define EIGEN_HAS_CXX11_OVERRIDE_FINAL 0
#endif
#endif
#if defined(EIGEN_CUDACC) && EIGEN_HAS_CONSTEXPR
// While available already with c++11, this is useful mostly starting with c++14 and relaxed constexpr rules
#if defined(__NVCC__)
@@ -1095,6 +1104,15 @@ bool all(T t, Ts ... ts){ return t && all(ts...); }
}
#endif
#if EIGEN_HAS_CXX11_OVERRIDE_FINAL
// provide override and final specifiers if they are available:
# define EIGEN_OVERRIDE override
# define EIGEN_FINAL final
#else
# define EIGEN_OVERRIDE
# define EIGEN_FINAL
#endif
// Wrapping #pragma unroll in a macro since it is required for SYCL
#if defined(__SYCL_DEVICE_ONLY__)
#if defined(_MSC_VER)