BOOST_CHECK_EQUAL (जोड़ी, जोड़ी) करने का प्रयास करते समय, gcc को जोड़ी के लिए स्ट्रीम ऑपरेटर नहीं मिला है, इसे घोषित करने के बावजूद। मजाकिया बात यह है कि std :: out ऑपरेटर पाता है।जोड़ी <int, int> और कस्टम ऑपरेटर के साथ BOOST_CHECK_EQUAL <<
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);
}
यह does not त्रुटि के साथ संकलन:
... instantiated from here
../boost-atp/release/include/boost/test/test_tools.hpp:326:9: error: no match for ‘operator<<’ in ‘ostr << t’
कस्टम प्रकार के लिए अपने स्वयं के मुद्रण को परिभाषित करने की * नई * जिस तरह से यहां समझाया गया है: https://stackoverflow.com/a/44810846/1617295 और [यह है आधिकारिक दस्तावेज] (उस सुविधा के http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/test_output/test_tools_support_for_logging/testing_tool_output_disable.html)। – Raffi
@Raffi यह प्रश्न इस के डुप्लिकेट की तरह दिखता है, इसमें कम विवरण है। हो सकता है कि इसे डुप्लिकेट के रूप में चिह्नित करना और अपना उत्तर यहां ले जाएं ताकि हम उपयोगकर्ताओं को कूद न सकें? मैं इसे भी स्वीकार कर सकता हूं। धन्यवाद! – nishantjr