boost::tuple und iostream [gelöst]
-
Hallo,
ich habe folgendes Problem:for (set<boost::tuple<UncompressedVector, UncompressedVector>, twoTupleOfUncompressedVectorLess>::iterator i=valid2_6.begin(); i!=valid2_6.end(); i++) { cout << (i->get<0>()); // Zeile verursacht Problem }Den Fehler, den der g++ auswirft, ist folgender
lattice_main.cpp:652: error: no match for 'operator<<' in 'std::cout << i. std::_Rb_tree_const_iterator<_Tp>::operator-> [with _Tp = boost::tuples::tuple<UncompressedVector, UncompressedVector, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>]()->boost::tuples::tuple<UncompressedVector, UncompressedVector, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>::<anonymous>.boost::tuples::cons<HT, TT>::get [with int N = 0, HT = UncompressedVector, TT = boost::tuples::cons<UncompressedVector, boost::tuples::null_type>]()'
Ich weiß, dass der Code von
std::ostream & operator<<(std::ostream & out, UncompressedVector& uv)recht zuverlässig funktioniert, daher gehe ich nicht davon aus, dass hier das Problem besteht.
Was mache ich also falsch?
P. S.: Was ich schon probiert habe:
cout << ((*i).get<0>()); cout << ((*i).template get<0>()); cout << (i->template get<0>());(bis auf mögliche Vertipper, die ich mir vorbehalte, half dies nichts)
-
wolfgke schrieb:
Ich weiß, dass der Code von
std::ostream & operator<<(std::ostream & out, UncompressedVector& uv)recht zuverlässig funktioniert, daher gehe ich nicht davon aus, dass hier das Problem besteht.
Es fehlt wohl ein const
std::ostream & operator<<(std::ostream & out, const UncompressedVector& uv)
-
Danke, das löst das Problem.