Boost logo

Boost Users :

From: Peter Waller (peter.waller_at_[hidden])
Date: 2007-10-12 06:26:18


I wish to write some lambda functions to have this sort of behaviour.

#include <lambda/lambda.hpp>
#include <lambda/bind.hpp>
#include <function.hpp>

using namespace boost::lambda;
using namespace boost;

#include <iostream>
using std::cout; using std::endl;

#include <cmath>

int main( int argc, char *argv[] )
{
    float value;
    var_type<float>::type theValue( var( value ) );

    // Ignore this line
    #define cos(theta) bind( unlambda(bind( cos, _1 )), theta )

    function<float ( float )> myfunction = ( cos( theValue ) - 1 );
    value = 2;
    cout << "The result = " << myfunction(1) << endl;
    return 0;
}

Namely, the cos( value ) part.

The code above works, but I feel that using a #define is a little
messy, and seems hard to generalise to functions with more arguments.
I was wondering if there was a general, better way of turning a given
function into one whose execution is delayed.

Thanks in advance,

- Peter


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