changeset 14992:67870be3d58f draft

(svn r19604) -Codechange: Reintroduce assert_tcompile().
author frosch <frosch@openttd.org>
date Sun, 11 Apr 2010 15:43:54 +0000
parents 6790e0d0f93d
children f3e5df0b5727
files src/stdafx.h
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -313,15 +313,20 @@
 	#define PERSONAL_DIR ""
 #endif
 
-/* Compile time assertions. Prefer c++0x static_assert() */
+/* Compile time assertions. Prefer c++0x static_assert().
+ * Older compilers cannot evaluate some expressions at compile time,
+ * typically when templates are involved, try assert_tcompile() in those cases. */
 #if defined(__STDCXX_VERSION__) || defined(__GXX_EXPERIMENTAL_CXX0X__) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(static_assert)
 	/* __STDCXX_VERSION__ is c++0x feature macro, __GXX_EXPERIMENTAL_CXX0X__ is used by gcc, __GXX_EXPERIMENTAL_CPP0X__ by icc */
 	#define assert_compile(expr) static_assert(expr, #expr )
+	#define assert_tcompile(expr) assert_compile(expr)
 #elif defined(__OS2__)
 	/* Disabled for OS/2 */
 	#define assert_compile(expr)
+	#define assert_tcompile(expr) assert_compile(expr)
 #else
 	#define assert_compile(expr) typedef int __ct_assert__[1 - 2 * !(expr)]
+	#define assert_tcompile(expr) assert(expr)
 #endif
 
 /* Check if the types have the bitsizes like we are using them */