W jaki sposób mogę poniższe makra zamienić na funkcje inline, tak żeby pokazywały one wyrażenie podstawione za argument expr w kodzie źródłowym oprócz samego wyniku testu? W makrach jest to wykonalne ale wolę używać funkcji inline zamiast polegać na preprocesorze
#include <cassert>
#include <iostream>
#define CHECKPOINT(msg) (std::cerr << (msg) << std::endl)
#define ASSERT(expr) \
assert((expr)); \
CHECKPOINT("* test passed");
#define ASSERTM(msg, expr) \
assert((void(msg), (expr))); \
CHECKPOINT("* test passed");
#define ASSERT_FALSE(expr) \
assert((expr) == false); \
CHECKPOINT("* test passed");
#define ASSERTM_FALSE(msg, expr) \
assert((void(msg), (expr) == false)); \
CHECKPOINT("* test passed");
#define TEST_CASE(msg) \
(std::cout << "TEST CASE: " << (msg) << std::endl)