Hi All
I tried to use BOOST_FOREACH with bimap but it doesn't compile.
What is wrong in using it the way is displayed below?
Reading the specs it should be able to work since bimap provide .begin() and .end() methods.
Thanks
CS
typedef boost::bimap<int,std::string > BMap;
typedef boost::bimap<int,std::string >::value_type BMapVal;
typedef boost::bimap<int,std::string >::const_iterator BMapKIt;
BMap myBimap;
myBimap.insert( BMapVal( 10, "hi") );
myBimap.insert( BMapVal( 20, "hihihi") );
BOOST_FOREACH( BMapKIt it, myBimap) // this line doesnt' compile:
{
std::cout << "LEFT: " << it->left
<< " RIGHT: " << it->right << std::endl;
}
TestBoost_Nov26.h:68: error: conversion from
‘boost::bimaps::relation::mutant_relation<boost::bimaps::tags::tagged<const
int, boost::bimaps::relation::member_at::left>,
boost::bimaps::tags::tagged<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
boost::bimaps::relation::member_at::right>, mpl_::na, false>’ to
non-scalar type
‘boost::bimaps::detail::set_view_iterator<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::index_node_base<boost::bimaps::relation::mutant_relation<boost::bimaps::tags::tagged<const
int, boost::bimaps::relation::member_at::left>,
boost::bimaps::tags::tagged<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
boost::bimaps::relation::member_at::right>, mpl_::na, true>,
std::allocator<boost::bimaps::relation::mutant_relation<boost::bimaps::tags::tagged<const
int, boost::bimaps::relation::member_at::left>,
boost::bimaps::tags::tagged<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
boost::bimaps::relation::member_at::right>, mpl_::na, true> >
> > > >’ requested