
On Tue, Feb 3, 2009 at 9:45 AM, Igor R <boost.lists@gmail.com> wrote:
The following code crashes in for_each when trying to output the 1st pair. What's wrong with it?
Thanks!
namespace bl = boost::lambda; std::map<std::string, std::string> temp; temp["a"] = "1"; temp["b"] = "2"; const std::map<std::string, std::string> attrs(temp); typedef std::pair<std::string, std::string> string_pair; std::stringstream stream; std::for_each(attrs.begin(), attrs.end(), stream << bl::bind(&string_pair::first, bl::_1) << bl::bind(&string_pair::second, bl::_1));
Or essentially the same solution, but tidied up
#include "boost/lambda/lambda.hpp" #include "boost/lambda/bind.hpp" #include <algorithm> #include <map> #include <iostream> #include <sstream> int main( ) { namespace bl = boost::lambda; typedef std::map<std::string, std::string> map_type; map_type temp; temp["a"] = "1"; temp["b"] = "2"; const map_type attrs(temp); typedef map_type :: value_type string_pair; std::stringstream stream; std::for_each(attrs.begin(), attrs.end(), stream << bl::bind(&string_pair::first, bl::_1) << bl::bind(&string_pair::second, bl::_1)); } Cheers, Rob.