【发布时间】:2014-08-06 21:14:44
【问题描述】:
是否可以将元组列出来?
typedef std::tuple<int,node*> node;
运行时等效项是:
struct node {
int i;
node* next
};
更新(1)
因为我受到了很多批评。我将扩展这个问题。最初我只是想保持简单。
(1) 我更喜欢使用元组而不是结构。原因之一是我将 boost fusion 用于 io、算法和元编程。结构没有那个。有关元组或等效 boost::fusion::vector 的更多信息,请参阅http://www.boost.org/doc/libs/1_55_0/libs/fusion/doc/html/fusion/quick_start.html
(2) 具体来说,我使用了许多类似于这个的结构:
struct SLseg{
int edge;
Point lP;
Point rP;
SLseg* above;
SLseg* below;
};
我不想为它们中的每一个写operator<< 或使用继承。 boost::fusion's io 和 pretty-print 提供了输出结构的设施,因为它们是元组;即使元组中有 stl 容器。
(3) 列表只是一个简单的例子。考虑使用enable_if 和一些融合/ mpl 算法确定类型的异构列表。
【问题讨论】:
-
嗯...是吗?
std::vector<std::tuple<int, node*> >? -
我确定我误解了这个问题。那么您能否详细说明/澄清一下?
-
还有,这和
boost或recursion有什么关系? -
@Jashaszun 我认为问题在于
node尚未在std::tuple<int,node*>的范围内,因此您不能使用node *作为模板参数... -
构造的意义何在?它与“运行时等效”相同,两种布局都可以在编译时使用。