Boost.Fusionの要素追加

BoostML - 【fusion】 "real" return types


メモ。

#include <string>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/algorithm/transformation/push_back.hpp>

namespace fusion = boost::fusion;

template <class Vector, class T>
typename fusion::result_of::as_vector<
    typename fusion::result_of::push_back<Vector, T>::type
>::type
    push(Vector vec, T value)
{
    return fusion::push_back(vec, value);
}

int main()
{
    fusion::vector<int, std::string> t(3, "abc");

    fusion::vector<int, std::string, double> result = push(t, 3.14);
        // result:(3, "abc", 3.14)
}


【参考】

boost::fusion::push_back


boost::fusion::result_of::push_back