annotate armadillo-3.900.4/include/armadillo_bits/arma_static_check.hpp @ 84:55a047986812 tip

Update library URI so as not to be document-local
author Chris Cannam
date Wed, 22 Apr 2020 14:21:57 +0100
parents 1ec0e2823891
children
rev   line source
Chris@49 1 // Copyright (C) 2008-2011 NICTA (www.nicta.com.au)
Chris@49 2 // Copyright (C) 2008-2011 Conrad Sanderson
Chris@49 3 //
Chris@49 4 // This Source Code Form is subject to the terms of the Mozilla Public
Chris@49 5 // License, v. 2.0. If a copy of the MPL was not distributed with this
Chris@49 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
Chris@49 7
Chris@49 8
Chris@49 9 //! \addtogroup arma_static_check
Chris@49 10 //! @{
Chris@49 11
Chris@49 12
Chris@49 13
Chris@49 14 template<bool ERROR___INCORRECT_OR_UNSUPPORTED_TYPE>
Chris@49 15 struct arma_type_check_cxx1998
Chris@49 16 {
Chris@49 17 arma_inline
Chris@49 18 static
Chris@49 19 void
Chris@49 20 apply()
Chris@49 21 {
Chris@49 22 static const char
Chris@49 23 junk[ ERROR___INCORRECT_OR_UNSUPPORTED_TYPE ? -1 : +1 ];
Chris@49 24 }
Chris@49 25 };
Chris@49 26
Chris@49 27
Chris@49 28
Chris@49 29 template<>
Chris@49 30 struct arma_type_check_cxx1998<false>
Chris@49 31 {
Chris@49 32 arma_inline
Chris@49 33 static
Chris@49 34 void
Chris@49 35 apply()
Chris@49 36 {
Chris@49 37 }
Chris@49 38 };
Chris@49 39
Chris@49 40
Chris@49 41
Chris@49 42 #if !defined(ARMA_USE_CXX11)
Chris@49 43
Chris@49 44 #define arma_static_check(condition, message) static const char message[ (condition) ? -1 : +1 ]
Chris@49 45
Chris@49 46 #define arma_type_check(condition) arma_type_check_cxx1998<condition>::apply()
Chris@49 47
Chris@49 48 #else
Chris@49 49
Chris@49 50 #define arma_static_check(condition, message) static_assert( !(condition), #message )
Chris@49 51
Chris@49 52 #define arma_type_check(condition) static_assert( !(condition), "error: incorrect or unsupported type" )
Chris@49 53
Chris@49 54 #endif
Chris@49 55
Chris@49 56
Chris@49 57
Chris@49 58 //! @}