I wish to write some lambda functions to have this sort of behaviour.
#include
#include
#include
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 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