我有一个类模板这需要一个类型和一个指针,它指向类型的变量:与数据指针可变参数模板模板
template <typename arg_t, arg_t* storage>
class Value;
我有一个第二类模板,采用可变数目的模板
template <typename... arg_t>
class ValueList;
我想要让这个只有类型的类模板的价值可以作为由局部专业化参数值列表:第一类。这是我所期待的工作:
template <typename... arg_t, arg_t*... storage>
class ValueList<Value<arg_t, storage>...>;
在Visual C++ 2013年,我得到的错误:'arg_t*': parameter pack cannot be expanded in this context
。请注意,这种类型的扩展适用于只有类型的模板,IE ...
template <typename...>
class A;
template <template <typename, typename> class B, typename... C, typename... D>
class A<B<C, D>...> {};
...有效。什么使这种情况有所不同,以及达到预期效果的正确语法是什么?
用法:
int a;
float b;
int main(int argc, char** argv) {
ValueList<Value<int, &a>, Value<float, &b> > list;
}
你能告诉我们这种类型的用法吗?但是,它为我工作在gcc/clang。 – ForEveR
@ForEveR增加了OP的使用。 – NmdMystery
@ForEveR我只是在MinGW中试过它,它也在那里工作。 Visual C++真的在后面吗? – NmdMystery