【发布时间】:2015-08-09 19:53:56
【问题描述】:
我想知道是否可以使用参数包捕获交替参数模式。例如,
template<typename T, size_t U, typename... Args>
class foo<T, U, Args...>
{
public:
foo() : my_T(nullptr), my_U(U) {}
private:
T* my_T;
size_t my_U;
foo<Args...> my_next_foo;
}
所以这不起作用,因为 Args 是一个只有类型的参数包。有没有办法修改它,以便可以在可变参数模板中正确捕获 typename T, size_t U 模式?谢谢
【问题讨论】:
-
是的。将类型和值对作为类型列表。
-
一般来说(当你的模式不重复时),传输非类型参数的常用方法是将它们放在一个类中。示例包括
std::true_type、std::integral_constant等。
标签: c++ c++11 variadic-templates