很可能是一个愚蠢的问题,但无论如何。
是否有一种简短的方法来声明采用任意参数组合的构造函数?例如,具有 3 个参数的 ctor 有 2^3 种可能的组合(如下面的模型所示)。
template<typename T>
struct Node{
Node(Species sp, Edge edge, T data) : sp_m(sp), edge_m(edge), data_m(data) { }
// Default Ctor, 0 arg
Node() : Node(Species(), Edge(), T()) { }
// All combinations of 1 arg
Node(Species sp): Node(sp, Edge(), T()) { }
Node(Edge edge) : Node(Species(), edge, T()) { }
Node(T data) : Node(Species(), Edge(), data) { }
// All combinations of 2 args
Node(Species sp, Edge edge) : Node(sp, edge, T()) { }
Node(Species sp, T data) : Node(sp, Edge(), data){ }
Node(Edge edge, T data) : Node(Species(), edge, data){ }
Species sp_m;
Edge edge_m;
T data_m;
};
我可以避免声明所有不同的演员吗?