Note that these macros do not log anything unless they are *directly* inside a catch test scope macro (i.e. TEST_CASE, SECTION, GIVEN/WHEN/THEN/...). In particular they cannot be used inside loops or ```if``` statements.
All these macros allow heterogenous sequences of values to be streaming using the insertion operator (```<<```) in the same way that std::ostream, std::cout, etc support it.
E.g.:
```c++
INFO( "The number is " <<i);
```
(Note that there is no initial ```<<``` - instead the insertion sequence is placed in parentheses.)
The message is logged to a buffer, but only reported with the next assertion that is logged. This allows you to log contextual information in case of failures which is not shown during a successful test run (for the console reporter, without -s). Messages are removed from the buffer at the end of their scope, so may be used, for example, in loops.
Sometimes you just want to log the name and value of a variable. While you can easily do this with the INFO macro, above, as a convenience the CAPTURE macro handles the stringising of the variable name for you (actually it works with any expression, not just variables).