Я знаю, что это старый вопрос, но я наткнулся на ту же проблему и нашел простое решение. В заголовочном файле Catch.hpp, где определен класс Approx (строка 2045 на момент написания), просто добавьте следующий конструктор:
class Approx {
public:
explicit Approx( double value )
: m_epsilon( std::numeric_limits<float>::epsilon()*100 ),
m_scale( 1.0 ),
m_value( value )
{}
explicit Approx( double value, double epsilon ) // <- New constructor
: m_epsilon( epsilon ),
m_scale( 1.0 ),
m_value( value )
{}
Теперь вы можете сделать это:
TEST_CASE("demo/approx", "Approx demo") {
double myTol = 0.1;
double a = 1.0;
double b = a + myTol;
REQUIRE_FALSE(a == b);
REQUIRE(a == Approx(b, myTol));
}