使用另一个构造一个具体的boost::元组类型



给定:

typedef boost::tuple<T1,T2,T3。。。,Tn>Tuple_Tn

其中类型T1、。。。Tn都已定义,

给定类型T_another,我想定义一个新的元组类型:

typedef boost::tuple<T1,T2,T3。。。,Tn,T_other>Tuple_T_plus_1

但我的问题是:在我想定义它的地方,我只能访问类型Tuple_Tn和T_another。

换句话说,是否可以仅根据Tuple_Tn和T_another来定义Tuple_T_plus_1?

我不确定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也可以实现同样的功能,但编写起来会更加乏味。

相关内容

  • 没有找到相关文章

最新更新