我想输入一个可变参数模板参数,如所附代码所示。有可能实现吗?
template <typename... T>
class Test
{
public:
typedef T Arg;
};
template <typename T>
class X
{
public:
X(T::Arg arg);
};
最佳答案
您不能将包分配给非包。不过,您可以将其放入 std::tuple
中。
template <typename... T>
class Test
{
public:
typedef std::tuple< T ... > Arg;
};
随后从 Arg
获取带有参数列表 T ...
的函数需要更多工作,我不建议将其作为设计模式。最好以其他方式耦合 class Test
和 X::X
。
关于C++ typedef 到可变参数模板参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249386/