#include <boost/phoenix/core/value.hpp>

Whenever we see a constant in a partially applied function, an


(where T is the type of the constant) is automatically created for us. For instance:

add(arg1, 6)

Passing a second argument, 6, an expression::value<T>::type is implicitly created behind the scenes. This is also equivalent to add(arg1, val(6)).


generates an expression::value<T>::type where T is the type of v. In most cases, there's no need to explicitly use val, but, as we'll see later on, there are situations where this is unavoidable.

Evaluating a Value

Like arguments, values are also actors. As such, values can be evaluated. Invoking a value gives the value's identity. Example:

cout << val(3)() << val("Hello World")();

prints out "3 Hello World".