void main()
{
typedef boost::ptr_map<int, char> MyMap;
//typedef std::map<int, char *> MyMap; // in contrast with std type it works
MyMap mymap;
mymap[1] = new char('a');
mymap[2] = new char('b');
mymap[3] = new char('c');
BOOST_FOREACH(MyMap::value_type value, mymap)
{
std::cout << value.first << " " << value.second << std::endl;
}
MyMap const & const_mymap = mymap;
BOOST_FOREACH(const MyMap::value_type value, const_mymap)
{
std::cout << value.first << " " << value.second << std::endl;
}
}
El siguiente mensaje de error proviene de GCC en la segunda BOOST_FOREACHpor qué BOOST_FOREACH no puede manejar const boost :: ptr_map?
error: conversion from 'boost::ptr_container_detail::ref_pair<int, const char* const>' to non-scalar type 'boost::ptr_container_detail::ref_pair<int, char* const>' requested
Creo que esta es la debilidad de ref_pair del contenedor puntero ...
Me gustó esto hasta que fui a ver la biblioteca para obtener más información ... '" Los niveles son tuplas, donde todos los elementos son de tipos de referencia no constantes. 'La pregunta es específicamente sobre las referencias' const'. – Dennis
Aún funcionará con los mapas de const. La referencia no const está ligada a las variables locales y no a los elementos del mapa. –
lo verá de nuevo. Aclamaciones. – Dennis