#include #include #include #include #include #include int main() { using boost::phoenix::arg_names::arg1 ; using boost::phoenix::arg_names::arg2 ; using boost::phoenix::val ; using boost::phoenix::at_c ; double mass(1.) ; auto apply(boost::phoenix::at_c<0>(arg1) += boost::phoenix::at_c<1>(arg1) / val(mass) * arg2 ) ; std::valarray item_a = { 1., 1., 1. } ; std::valarray item_b = { 1., 1., 1. } ; auto test(std::make_tuple(item_a, item_b)) ; for (size_t i(0); i(test).size(); ++i) std::cout << std::get<0>(test)[i] << " "; std::cout << std::endl ; for (size_t i(0); i(test).size(); ++i) std::cout << std::get<0>(test)[i] << " "; std::cout << std::endl ; std::cout << "======================================" << std::endl ; apply (test, 1.) ; std::get<0>(test) += std::get<0>(test) / mass * 1. ; for (size_t i(0); i(test).size(); ++i) std::cout << std::get<0>(test)[i] << " "; std::cout << std::endl ; for (size_t i(0); i(test).size(); ++i) std::cout << std::get<1>(test)[i] << " "; std::cout << std::endl ; }