BOOST_CHECK_EQUAL mit dem Paar <int, int> und dem benutzerdefinierten Operator <<

Beim Versuch, ein BOOST_CHECK_EQUAL (Paar, Paar) auszuführen, findet gcc den Stream-Operator für das Paar nicht, obwohl er deklariert wurde. Das Lustige ist, dass std :: out den Operator findet.

ostream& operator<<(ostream& s, const pair<int,int>& p) {
    s << '<' << p.first << ',' << p.second << '>';
    return s;
}


BOOST_AUTO_TEST_CASE(works)
{
    pair<int,int> expected(5, 5);
    pair<int,int> actual  (5, 5);
    std::cout << expected << std::endl;
    std::cout << actual   << std::endl;
    BOOST_CHECK(actual == expected);
}

BOOST_AUTO_TEST_CASE(no_work)
{
    pair<int,int> expected(5, 5);
    pair<int,int> actual  (5, 5);
    BOOST_CHECK_EQUAL(actual, expected);
}

Dies kompiliert nicht mit dem Fehler:

...  instantiated from here
../boost-atp/release/include/boost/test/test_tools.hpp:326:9: error: no match for ‘operator<<’ in ‘ostr << t’

Antworten auf die Frage(3)

Ihre Antwort auf die Frage