Chris@49: // Copyright (C) 2008-2011 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2011 Conrad Sanderson Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: //! \addtogroup arma_static_check Chris@49: //! @{ Chris@49: Chris@49: Chris@49: Chris@49: template Chris@49: struct arma_type_check_cxx1998 Chris@49: { Chris@49: arma_inline Chris@49: static Chris@49: void Chris@49: apply() Chris@49: { Chris@49: static const char Chris@49: junk[ ERROR___INCORRECT_OR_UNSUPPORTED_TYPE ? -1 : +1 ]; Chris@49: } Chris@49: }; Chris@49: Chris@49: Chris@49: Chris@49: template<> Chris@49: struct arma_type_check_cxx1998 Chris@49: { Chris@49: arma_inline Chris@49: static Chris@49: void Chris@49: apply() Chris@49: { Chris@49: } Chris@49: }; Chris@49: Chris@49: Chris@49: Chris@49: #if !defined(ARMA_USE_CXX11) Chris@49: Chris@49: #define arma_static_check(condition, message) static const char message[ (condition) ? -1 : +1 ] Chris@49: Chris@49: #define arma_type_check(condition) arma_type_check_cxx1998::apply() Chris@49: Chris@49: #else Chris@49: Chris@49: #define arma_static_check(condition, message) static_assert( !(condition), #message ) Chris@49: Chris@49: #define arma_type_check(condition) static_assert( !(condition), "error: incorrect or unsupported type" ) Chris@49: Chris@49: #endif Chris@49: Chris@49: Chris@49: Chris@49: //! @}