BOOST_CHECK_EQUAL с парой <int, int> и пользовательским оператором <<

При попытке сделать BOOST_CHECK_EQUAL (пара, пара), gcc не находит оператора потока для пары, несмотря на его объявление. Самое смешное, что std :: out находит оператора.

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);
}

Это не компилируется с ошибкой:

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

Ответы на вопрос(3)

Ваш ответ на вопрос