c++boost-lambda

boost::lambda bind expressions can't get bind to string's empty() to work


I am trying to get the below code snippet to compile. But it fails with:

error C2665: 'boost::lambda::function_adaptor::apply' : none of the 8 overloads could convert all the argument types. Specifying the return type when calling bind does not help.

Any idea what I am doing wrong?

#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <string>
#include <map>

int main()
{

    namespace bl = boost::lambda;
    typedef std::map<int, std::string> types;
    types keys_and_values;
    keys_and_values[ 0 ] = "zero";
    keys_and_values[ 1 ] = "one";
    keys_and_values[ 2 ] = "Two";

    std::for_each(
        keys_and_values.begin(),
        keys_and_values.end(),
        std::cout <<  bl::constant("Value empty?: ") << std::boolalpha <<  
                        bl::bind(&std::string::empty,
                                bl::bind(&types::value_type::second, _1)) << "\n");




    return 0;
}

Solution

  • minor changes to make it compile with g++ (time for better compiler :-) ?)

     1 #include <boost/lambda/lambda.hpp>
     2 #include <boost/lambda/bind.hpp>
     3 #include <algorithm>
     4 #include <iostream>
     5 #include <string>
     6 #include <map>
     7
     8 int main()
     9 {
    10
    11     namespace bl = boost::lambda;
    12     typedef std::map<int, std::string> types;
    13     types keys_and_values;
    14     keys_and_values[ 0 ] = "zero";
    15     keys_and_values[ 1 ] = "one";
    16     keys_and_values[ 2 ] = "Two";
    17
    18     std::for_each(
    19                   keys_and_values.begin(),
    20                   keys_and_values.end(),
    21                   std::cout <<  bl::constant("Value empty?: ") << std::boolalpha <<
    22                   bl::bind(&std::string::empty,
    23                            bl::bind(&types::value_type::second, bl::_1)) << "\n");
    24
    25
    26
    27
    28     return 0;
    29 }
    

    notice missing includes and bl::_1