diff options
Diffstat (limited to 'shared/loki/static_check.h')
-rw-r--r-- | shared/loki/static_check.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/shared/loki/static_check.h b/shared/loki/static_check.h new file mode 100644 index 00000000..51ce389e --- /dev/null +++ b/shared/loki/static_check.h @@ -0,0 +1,45 @@ +//////////////////////////////////////////////////////////////////////////////// +// The Loki Library +// Copyright (c) 2001 by Andrei Alexandrescu +// This code accompanies the book: +// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design +// Patterns Applied". Copyright (c) 2001. Addison-Wesley. +// Permission to use, copy, modify, distribute and sell this software for any +// purpose is hereby granted without fee, provided that the above copyright +// notice appear in all copies and that both that copyright notice and this +// permission notice appear in supporting documentation. +// The author or Addison-Wesley Longman make no representations about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. +//////////////////////////////////////////////////////////////////////////////// +#ifndef LOKI_STATIC_CHECK_INC_ +#define LOKI_STATIC_CHECK_INC_ + +// $Id: static_check.h 752 2006-10-17 19:52:18Z syntheticpp $ + + +namespace Loki +{ +//////////////////////////////////////////////////////////////////////////////// +// Helper structure for the STATIC_CHECK macro +//////////////////////////////////////////////////////////////////////////////// + + template<int> struct CompileTimeError; + template<> struct CompileTimeError<true> {}; +} + +//////////////////////////////////////////////////////////////////////////////// +// macro STATIC_CHECK +// Invocation: STATIC_CHECK(expr, id) +// where: +// expr is a compile-time integral or pointer expression +// id is a C++ identifier that does not need to be defined +// If expr is zero, id will appear in a compile-time error message. +//////////////////////////////////////////////////////////////////////////////// + +#define LOKI_STATIC_CHECK(expr, msg) \ + { Loki::CompileTimeError<((expr) != 0)> ERROR_##msg; (void)ERROR_##msg; } + + +#endif // end file guardian + |