mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 05:59:32 +01:00 
			
		
		
		
	Force short-circuited evaluation for types that have overloaded &&.
This fixes #574.
This commit is contained in:
		@@ -40,7 +40,8 @@
 | 
				
			|||||||
            __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \
 | 
					            __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \
 | 
				
			||||||
        } \
 | 
					        } \
 | 
				
			||||||
        INTERNAL_CATCH_REACT( __catchResult ) \
 | 
					        INTERNAL_CATCH_REACT( __catchResult ) \
 | 
				
			||||||
    } while( Catch::isTrue( false && !!(expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look
 | 
					    } 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 &&.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
///////////////////////////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////////////////////////
 | 
				
			||||||
#define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \
 | 
					#define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user