Boost logo

Boost Users :

From: Paul S. Strauss (pss_at_[hidden])
Date: 2008-06-09 19:26:43

I can't seem to get BOOST_CHECK_EQUAL with std::type_info
instances to compile with g++,
version (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)

Here's a simple test case:

#include <iostream>
#include <typeinfo>

#include <boost/test/included/unit_test.hpp>

std::ostream &
operator<<(std::ostream &out, const std::type_info &info) {
     return out <<;

     std::cout << "Typeid of int is " << typeid(int) << "\n";
     BOOST_CHECK_EQUAL(typeid(int), typeid(float));

g++ complains that there isn't an operator<< for type_info
in the BOOST_CHECK_EQUAL, even though it is used just fine
on the previous line.


g++ -o ti ti.cpp
/usr/include/boost/test/test_tools.hpp: In member function ‘void
const T&) [with T = std::type_info]’:
/usr/include/boost/test/test_tools.hpp:404: instantiated from
‘std::ostream& boost::test_tools::tt_detail::operator<<(std::ostream&,
const boost::test_tools::tt_detail::print_helper_t<T>&) [with T =
/usr/include/boost/test/utils/wrap_stringstream.hpp:66: instantiated
 from ‘boost::basic_wrap_stringstream<CharT>&
boost::operator<<(boost::basic_wrap_stringstream<CharT>&, const T&) [with
CharT = char, T =
/usr/include/boost/test/test_tools.hpp:460: instantiated from ‘void
boost::test_tools::tt_detail::check_frwd(Pred, boost::wrap_stringstream&,
boost::test_tools::const_string, size_t,
boost::test_tools::tt_detail::check_type, const Arg0&, const char*, const
Arg1&, const char*) [with Pred =
boost::test_tools::tt_detail::equal_impl_frwd, Arg0 = std::type_info, Arg1
= std::type_info]’
ti.cpp:14: instantiated from here
/usr/include/boost/test/test_tools.hpp:298: error: no match for
‘operator<<’ in ‘ostr << t’

<List of candidates removed, but type_info isn't one of them>

Anyone know why this is?

Paul S. Strauss                             pss_at_[hidden]

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at