【发布时间】:2016-06-16 05:17:34
【问题描述】:
我已经定义了类
template <typename... Ts> struct Bar {
using inner_type = /* whatever */;
};
现在,我需要定义一个模板类Foo,其模板参数是某个参数包,并为该参数包实例化一个Bar::inner_type 类型的值。不幸的是,我似乎无法做到。如果我这样定义:
template <Bar<Ts...>::inner_type SomeValue, typename... Ts> struct Foo { };
编译器在使用时无法识别Ts,因为它还没有看到参数包;但如果我这样定义:
template <typename... Ts, Bar<Ts...>::inner_type SomeValue> struct Foo { };
编译器嘲笑我尝试在其他模板参数之前使用参数包。
那么我该怎么做呢?
注意:如果重要的话,这对我来说在 GCC 4.9.3 中失败了。
【问题讨论】:
-
非类型模板参数(例如
template <int I>)? -
你不能用
template <typename T, T t> struct Foo;吗? -
最好的办法是向我们展示您打算如何实例化 Foo
-
@bolov:我不能给你看,因为我不能声明它......但它的实例化有什么特别之处?
标签: c++ c++11 variadic-templates using