BOOST_CHECK_EQUAL com o par <int, int> e o operador personalizado <<

Ao tentar fazer um BOOST_CHECK_EQUAL (par, par), o gcc não encontra o operador de fluxo para par, apesar de declará-lo. O engraçado é que std :: out encontra o operador.

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

Isso não compila com o erro:

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

questionAnswers(3)

yourAnswerToTheQuestion