
I would like to call a function using named parameters where I construct the values from two different argument packs. How do I write a function that will generically take the union of all of the named parameters? I am using Intel C++ 11.1 with C++0X features turned on, so 'decltype' and 'auto' are kosher, but not alternative function syntax. Also, the types I might have in the args could be by value or reference or constant reference, so I can't just copy them all by value. Here is a simple example to see what I mean: BOOST_PARAMETER_NAME(name1) BOOST_PARAMETER_NAME(name2) BOOST_PARAMETER_NAME(name3) template<typename ArgPack> double f(const ArgPack& args) { return args[_name1] + args[_name2] + args[_name3]; } //Test using the argpack directly... this works fine. std::cout << f( (_name1 = 1.0, _name2 = 1.0, _name3 = 1.0) ); //Now try to combine them: template<typename ArgPack1, typename ArgPack2> double g(const ArgPack1& args1, const ArgPack2& args2) { return f( parameter_union(args1, args2) ); //HOW DO I WRITE THE parameter_union FUNCTION? } //usage std::cout << g( (_name1 = 1.0, _name2 = 1.0), (_name3 = 1.0) ); Thanks for your help, Jesse