boost_phoenix 0.1.0

Boost C++ library boost_phoenix packaged using Zanbil
Documentation
/*=============================================================================
    Copyright (c) 2018 Nikita Kniazev

    Distributed under the Boost Software License, Version 1.0. (See accompanying 
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
==============================================================================*/

#include <boost/detail/lightweight_test.hpp>
#include <boost/phoenix.hpp>
#include <boost/function.hpp>
#include <string>

// Checks that rhs Phoenix actor is taken by value on assignment.
// The wrapper function is used to ensure that created temporaries are
// out of scope (as they will be created on the other stack frame).

boost::function<void()> make_assignment_test(std::string & s)
{
    return boost::phoenix::ref(s) = "asd";
}

int main()
{
    std::string s;
    make_assignment_test(s)();
    BOOST_TEST(s == "asd");

    return boost::report_errors();
}