小编Sta*_*son的帖子

如何创建一个接受可变数量的int的C++构造函数

是否可以约束可变参数构造函数中的参数类型?

我希望能够表达

X x1(1,3,4);
X x2(3,4,5);

// syntax error: identifier 'Args'
class X {
template<int ... Args> X(Args...)
{
}
};
// this works but allows other types than int
class Y {
template<typename ... Args> Y(Args...)
{
}
};
Run Code Online (Sandbox Code Playgroud)

编辑以澄清意图:

我想要实现的是将传递给构造函数的数据(编译时已知的常量)存储到静态数组中.

所以还有其他一些

template<int ...values>
struct Z
{
    static int data[sizeof...(values)];
};

template<int ... values>
int Z<values...>::data[sizeof...(values)] = {values...};
Run Code Online (Sandbox Code Playgroud)

并且在XI的构造函数中想要像这样使用Z:

class X {
    template<int ... Args> X(Args...)
    {
        Z<Args...>::data // do stuff with data
    }
};
Run Code Online (Sandbox Code Playgroud)

这可能,我们必须使用integer_sequence吗?

c++ variadic-functions

17
推荐指数
2
解决办法
3153
查看次数

标签 统计

c++ ×1

variadic-functions ×1