Can you provide the full code, including the #includes, and say which version of
Boost you're using, and which compiler.

- Rob.

Hello the complete code is given below. I'm using Boost 1.41.0 on VC9 and VC8.

=============================================================================
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using std::cout ;
using std::endl ;

#include <boost/algorithm/string/trim.hpp>
#include <boost/spirit/include/phoenix.hpp>

namespace phx = boost::phoenix ;
namespace pha = phx::arg_names ;
namespace str_algo = boost::algorithm ;

void trim(std::string& s)
{
str_algo::trim(s) ;
}

int main (void)
{
std::vector<std::string> vs ;

vs.push_back (" String1 ") ;
vs.push_back (" String2 ") ;
vs.push_back (" String3 ") ;

phx::for_each (pha::arg1, phx::lambda[ cout << pha::arg1 << '\n' ])(vs) ;
cout << "===================================" << endl ;

// What I'm trying to do is call boost::algorithm::trim on all elements of vector.
// the below given statement works without any problem.
std::for_each (vs.begin(), vs.end(), phx::bind(&trim, pha::arg1));
//How do I call boost::algorithm::trim directly using Boost.Phoenix or Boost.Lambda. Below
//I'm trying to do it using phoenix.
//std::for_each (vs.begin(), vs.end(), phx::bind(&str_algo::template trim, pha::_1));
phx::for_each (pha::arg1, phx::lambda[ cout << pha::arg1 << '\n' ])(vs) ;
cout << "===================================" << endl ;
}
===============================================================================