On Sep 22, 2011, at 2:12 PM, Júlio Hoffimann wrote:

Dear all,

I can't understand why this test case is not compiling:

#include    <boost/function.hpp>
#include    <boost/phoenix/core/argument.hpp>
#include    <boost/phoenix/operator.hpp>
#include    <iostream>
 
using namespace boost::phoenix::placeholders;
expression::argument<1>::type X;
try

typename boost::phoenix::expression::argument<1>::type X;

or something equivalent
 
int main ( int argc, char *argv[] )
{
    boost::function<int(int)> f;
    f = if_else( X == 0, X, X*2 );
    std::cout << f(0) << f(12) << std::endl;
    return 0;
}  // ----------  end of function main  ----------
The error message says 'expression' does not name a type. I've tried to explicitly play with boost::phoenix namespaces, but doesn't work.

HTH,
Gordon