|
Boost Users : |
Subject: [Boost-users] [phoenix] how to compare std:string
From: Michael Caisse (boost_at_[hidden])
Date: 2009-07-11 22:02:55
Hi all -
I have a vector of std::pair< std::string, int > and I want to
use std::find_if to get the location where the std::pair first is some
string value.
I have successfully performed the correct incantation to compare the
std::pair second to an int; however, it eludes me to what I need for
the string.
This is my test ----------------------------------
#include <vector>
#include <algorithm>
#include <boost/spirit/home/phoenix/core.hpp>
#include <boost/spirit/home/phoenix/operator.hpp>
#include <boost/spirit/home/phoenix/bind/bind_member_variable.hpp>
int main()
{
using namespace boost::phoenix;
using namespace boost::phoenix::arg_names;
typedef std::pair< std::string, int > node_type;
typedef std::vector< node_type > node_storage_type;
node_storage_type my_nodes;
my_nodes.push_back( std::pair< std::string, int >( "foo", 8 ) );
// this works great
node_storage_type::iterator iter = std::find_if( my_nodes.begin(), my_nodes.end(),
bind( &node_type::second, arg1 ) == 8 );
// compilation error here: ..\..\..\library\vendor\boost_1_38_0\boost/spirit/home/phoenix/operator/comparison.hpp(27) : error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
//
iter = std::find_if( my_nodes.begin(), my_nodes.end(),
bind( &node_type::first, arg1 ) == "foo" );
return 0;
}
Thanks !
michael
-- ---------------------------------- Michael Caisse Object Modeling Designs www.objectmodelingdesigns.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net