summaryrefslogtreecommitdiff
path: root/zen/assert_static.h
diff options
context:
space:
mode:
Diffstat (limited to 'zen/assert_static.h')
-rw-r--r--zen/assert_static.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/zen/assert_static.h b/zen/assert_static.h
new file mode 100644
index 00000000..00c4c5c8
--- /dev/null
+++ b/zen/assert_static.h
@@ -0,0 +1,44 @@
+// **************************************************************************
+// * This file is part of the zenXML project. It is distributed under the *
+// * Boost Software License, Version 1.0. See accompanying file *
+// * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt. *
+// * Copyright (C) 2011 ZenJu (zhnmju123 AT gmx.de) *
+// **************************************************************************
+
+#ifndef ASSERTSTATIC_H_INCLUDED
+#define ASSERTSTATIC_H_INCLUDED
+
+/*
+//compile time assert based on Loki (http://loki-lib.sourceforge.net)
+
+#ifdef NDEBUG
+
+#define assert_static(x) //((void)0) -> leads to error when seen in namespace scope!
+
+#else // debugging enabled
+namespace static_check_impl
+{
+template<int>
+struct CompileTimeError;
+
+template<>
+struct CompileTimeError<true> {};
+}
+
+#define LOKI_CONCAT( X, Y ) LOKI_CONCAT_SUB( X, Y )
+#define LOKI_CONCAT_SUB( X, Y ) X##Y
+
+#define assert_static(expr) \
+ enum { LOKI_CONCAT(loki_enum_dummy_value, __LINE__) = sizeof(StaticCheckImpl::CompileTimeError<static_cast<bool>(expr) >) }
+
+// #define assert_static(expr) \
+// { Loki::CompileTimeError<((expr) != 0)> Static_Assert_Has_Failed; (void)Static_Assert_Has_Failed; }
+
+#endif
+*/
+
+//C++11:
+#define assert_static(X) \
+ static_assert(X, "Static assert has failed!");
+
+#endif //ASSERTSTATIC_H_INCLUDED
bgstack15