mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 04:07:10 +01:00 
			
		
		
		
	use sizeof(expr) for unevaluated syntax check
This commit is contained in:
		 Mickey Rose
					Mickey Rose
				
			
				
					committed by
					
						 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
			
				
	
			
			
			 Martin Hořeňovský
						Martin Hořeňovský
					
				
			
						parent
						
							cfaf906417
						
					
				
				
					commit
					227598af47
				
			| @@ -40,8 +40,7 @@ | ||||
|             __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ | ||||
|         } \ | ||||
|         INTERNAL_CATCH_REACT( __catchResult ) \ | ||||
|     } while( Catch::isTrue( false && static_cast<bool>( !!(expr) ) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|     // The double negation silences MSVC's C4800 warning, the static_cast forces short-circuit evaluation if the type has overloaded &&. | ||||
|     } while( Catch::alwaysFalse( sizeof(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look | ||||
|  | ||||
| /////////////////////////////////////////////////////////////////////////////// | ||||
| #define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ | ||||
|   | ||||
| @@ -116,9 +116,8 @@ namespace Catch { | ||||
|     std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); | ||||
|  | ||||
|     // This is just here to avoid compiler warnings with macro constants and boolean literals | ||||
|     inline bool isTrue( bool value ){ return value; } | ||||
|     inline bool alwaysTrue() { return true; } | ||||
|     inline bool alwaysFalse() { return false; } | ||||
|     inline bool alwaysTrue( std::size_t = 0 ) { return true; } | ||||
|     inline bool alwaysFalse( std::size_t = 0 ) { return false; } | ||||
|  | ||||
|     void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user