#include #include int main() { using boost::phoenix::let; using boost::phoenix::val; using boost::phoenix::ref; using boost::phoenix::construct; using namespace boost::phoenix::local_names; int i = 0; let(_a = val(i))[ _a++, ref(i) = _a, std::cout << "i is now " << ref(i) << std::endl, construct() // contrived void return type ](); }