"Distributive"可变参数模板

"Distributive" variadic templates

本文关键字:参数 变参 Distributive      更新时间:2023-10-16

我有一个可变的模板类。它的构造函数应该接受在每个参数上模板化的特定类的实例,即

class Foo<A>
{
public:
    Foo(Bar<A>);
};
class Foo<A, B>
{
public:
    Foo(Bar<A>, Bar<B>);
};
class Foo<A, B, C>
{
public:
    Foo(Bar<A>, Bar<B>, Bar<C>);
};

我如何编写这个程序?

template<typename... T>
struct Foo {
    Foo(Bar<T>... bar);
};

在构造函数声明中,Bar<T>作为一个整体是被扩展的模式,例如对于Foo<int, long, double>,声明了一个取Bar<int>, Bar<long>, Bar<double>的构造函数