Разбирая пример юнит-теста встретился такой участок кода:
void Assert(bool b, const string& hint) {
AssertEqual(b, true, hint);
}
Но автор не объяснил должным образом как он работает,
а меня он приводит в замешательство. В функцию передаются два параметра, а внутри самой функции вызывается другая, но с тремя параметрами. Не совсем ясно как-то...
Сама AssertEqual реализуется через шаблон:
void AssertEqual (class T& t, const U& u, const string& hint) { if (t != u) {
ostringstream os;
os << "Assertion failed: " << t << "!=" << u << "Hint: " << hint; throw runtime_error(os);
} }