Поскольку printf
является вариативным, он полагается, что вы сообщите ему, что вы хотите напечатать.Насколько я знаю, нет способа сказать ему, чтобы он это выяснил.
Вы можете устранить проблему, используя потоки стандартной библиотеки .operator <<
перегружен для всех встроенных типов, и для вас будет выбрана правильная перегрузка.Вы можете изменить код на
template <typename T>
void AssertAreEqual(T t_Expected,T t_Actual, int line){
if (t_Expected != t_Actual)
std::cerr << "FAIL - Line < " << line << " > - Expected value does not match with expected\tExpected: < " << t_Expected << " > Actual < " t_Actual << " >\n";
}
Это также позволяет коду работать с любым типом, который обеспечивает operator !=
и operator <<