From 663cd1771883e1e7ac9c1a0dc8b797601b59ba17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Fri, 14 Oct 2011 12:58:54 +0200 Subject: Introduce Q_STATIC_ASSERT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Example of message of failed assert (gcc 4.6, file tst_qglobal.cpp:300): tst_qglobal.cpp:300:92: error: invalid application of ‘sizeof’ to incomplete type ‘QStaticAssertFailure’ Change-Id: Ic1798094f718eaad388d754034115aafbbb6bd5e Reviewed-by: João Abecasis --- src/corelib/global/qglobal.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/corelib/global/qglobal.h') diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 5f8e6be893..ee601859b7 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -1785,6 +1785,15 @@ Q_CORE_EXPORT void qt_assert_x(const char *where, const char *what, const char * # endif #endif +// Intentionally undefined +template class QStaticAssertFailure; +template <> class QStaticAssertFailure {}; + +#define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) +#define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B +#define Q_STATIC_ASSERT(...) \ + enum {Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) = sizeof(QStaticAssertFailure)} + Q_CORE_EXPORT void qt_check_pointer(const char *, int); Q_CORE_EXPORT void qBadAlloc(); -- cgit v1.2.3