30 lines
925 B
C++
30 lines
925 B
C++
/*=============================================================================
|
|
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();
|
|
}
|