sigx++ 2.0.1
|
00001 #ifndef _SIGX_STATIC_ASSERT_HPP_ 00002 #define _SIGX_STATIC_ASSERT_HPP_ 00003 00004 /* 00005 * Copyright 2006 Klaus Triendl 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free 00019 * Software Foundation, 51 Franklin Street, Fifth Floor, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00029 namespace sigx 00030 { 00031 00032 // HP aCC cannot deal with missing names for template value parameters 00033 template<bool B_> 00034 struct static_assert; 00035 00036 template<> 00037 struct static_assert<true> 00038 {}; 00039 00040 00041 // Not used; boost does many workarounds for different compilers to allow 00042 // using a static assertion in namespace, template and class scope 00043 #if 0 00044 // HP aCC cannot deal with missing names for template value parameters 00045 template<int I_> struct static_assert_test 00046 {}; 00047 #endif 00048 00049 00050 } // namespace sigx 00051 00052 00053 #define SIGX_STATIC_ASSERT( expr ) \ 00054 sizeof(::sigx::static_assert< (bool)( expr ) >) 00055 00056 00057 #endif // end file guard