Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2018. The current version is 1.89.0.
#include <boost/phoenix/core/value.hpp>
Whenever we see a constant in a partially applied function, an
expression::value<T>::type
(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)).
val(v)
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.
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".