From fb557aec5c1e4d75ef9293952dbfb03bbb357d6d Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Thu, 10 Oct 2019 11:40:21 +0200 Subject: [PATCH] bug #1752: disable some is_convertible tests for recent compilers. --- test/meta.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/meta.cpp b/test/meta.cpp index ea9607fe7..51395acd0 100644 --- a/test/meta.cpp +++ b/test/meta.cpp @@ -101,6 +101,14 @@ EIGEN_DECLARE_TEST(meta) VERIFY(( check_is_convertible(A*B, A) )); } + #if (EIGEN_COMP_GNUC && EIGEN_COMP_GNUC <= 99) \ + || (EIGEN_COMP_CLANG && EIGEN_COMP_CLANG <= 909) \ + || (EIGEN_COMP_MSVC && EIGEN_COMP_MSVC <=1914) + // See http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1752, + // basically, a fix in the c++ standard breaks our c++98 implementation + // of is_convertible for abstract classes. + // So the following tests are expected to fail with recent compilers. + STATIC_CHECK(( !internal::is_convertible::value )); #if (!EIGEN_COMP_GNUC_STRICT) || (EIGEN_GNUC_AT_LEAST(4,8)) // GCC prior to 4.8 fails to compile this test: @@ -110,12 +118,16 @@ EIGEN_DECLARE_TEST(meta) STATIC_CHECK(( !internal::is_convertible::value )); #endif STATIC_CHECK(( internal::is_convertible::value )); + + #endif + { int i; VERIFY(( check_is_convertible(fix<3>(), i) )); VERIFY((!check_is_convertible(i, fix()) )); } + VERIFY(( internal::has_ReturnType::value )); VERIFY(( internal::has_ReturnType >::value )); VERIFY(( !internal::has_ReturnType::value ));