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;
 
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.
Appreciate any help,
Júlio.
P.S.: Boost 1.47 / GCC 4.5