Я не уверен, что в Boost.Tuple есть такая функция, возможно, Boost.Fusion будет более подходящим для ваших нужд.
Однако если у вас есть компилятор, поддерживающийC ++ 11 вариационных шаблонов, вы можете переключиться на std::tuple
и написать небольшую метафункцию для добавления типа к существующему кортежу:
template <typename Container, typename T>
struct push_back;
template <template <typename...> class Container, typename T, typename... Args>
struct push_back<Container<Args...>, T>
{
typedef Container<Args..., T> type;
};
typedef std::tuple<int, double> myTuple;
typedef push_back<myTuple, bool>::type myOtherTuple;
myOtherTuple(1, 0.0, true);
То же самое можно сделать для boost::tuple
, ногораздо труднее написать.