From 6a2f7aa3ae4b0a1f66fc520ec99616154aaa0cd5 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Sat, 7 Nov 2015 13:16:38 +0100 Subject: QVariantIsNull: remove the non-C++11 implementation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit decltype is required now Change-Id: I69173127bd35f1d29945c8cfa47e1fbf1479c14d Reviewed-by: Thiago Macieira Reviewed-by: Jędrzej Nowacki --- src/corelib/kernel/qvariant_p.h | 39 --------------------------------------- 1 file changed, 39 deletions(-) (limited to 'src/corelib/kernel/qvariant_p.h') diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h index d84d702982..986eb2c467 100644 --- a/src/corelib/kernel/qvariant_p.h +++ b/src/corelib/kernel/qvariant_p.h @@ -202,7 +202,6 @@ class QVariantIsNull /// \internal /// This class checks if a type T has method called isNull. Result is kept in the Value property /// TODO Can we somehow generalize it? A macro version? -#if defined(Q_COMPILER_DECLTYPE) // C++11 version template class HasIsNullMethod { struct Yes { char unused[1]; }; @@ -214,44 +213,6 @@ class QVariantIsNull public: static const bool Value = (sizeof(test(0)) == sizeof(Yes)); }; -#elif defined(Q_CC_MSVC) && _MSC_VER >= 1400 && !defined(Q_CC_INTEL) // MSVC 2005, 2008 version: no decltype, but 'sealed' classes (>=2010 has decltype) - template - class HasIsNullMethod { - struct Yes { char unused[1]; }; - struct No { char unused[2]; }; - Q_STATIC_ASSERT(sizeof(Yes) != sizeof(No)); - - template static Yes test(char (*)[(&C::isNull == 0) + 1]); - template static No test(...); - public: - static const bool Value = (sizeof(test(0)) == sizeof(Yes)); - }; -#else // C++98 version (doesn't work for final classes) - template::isComplex> - class HasIsNullMethod - { - struct Yes { char unused[1]; }; - struct No { char unused[2]; }; - Q_STATIC_ASSERT(sizeof(Yes) != sizeof(No)); - - struct FallbackMixin { bool isNull() const; }; - struct Derived : public T, public FallbackMixin {}; // <- doesn't work for final classes - template struct TypeCheck {}; - - template static Yes test(...); - template static No test(TypeCheck *); - public: - static const bool Value = (sizeof(test(0)) == sizeof(Yes)); - }; - - // We need to exclude primitive types as they won't compile with HasIsNullMethod::Check classes - // anyway it is not a problem as the types do not have isNull method. - template - class HasIsNullMethod { - public: - static const bool Value = false; - }; -#endif // TODO This part should go to autotests during HasIsNullMethod generalization. Q_STATIC_ASSERT(!HasIsNullMethod::Value); -- cgit v1.2.3