読者です 読者をやめる 読者になる 読者になる

Boost.ParameterでArgumentPackの結合

C++

How to do a union of ArgumentPacks?

#include <iostream>
#include <boost/parameter/name.hpp>

BOOST_PARAMETER_NAME(name1)
BOOST_PARAMETER_NAME(name2)
BOOST_PARAMETER_NAME(name3)

template <class ArgPack>
double f(const ArgPack& args)
{
    return args[_name1] + args[_name2] + args[_name3];
}

template <class ArgPack1, class ArgPack2>
double g(const ArgPack1& args1, const ArgPack2& args2)
{
    return f((args1, args2)); // ※パックし直し
}

int main()
{
    std::cout << g( (_name1 = 1.0, _name2 = 1.0),
                    (_name3 = 1.0) );
}

tagged_argumentだけじゃなくarg_listにもoperator,がありました。