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’