我有以下问题:
#include <vector> #include <tuple> using namespace std; template< size_t... N_i,typename Ts... > class A { // ... private: std::vector<size_t> _v = { N_i... }; std::tuple<Ts...> _t; }; int main() { A<1> a; }
如您所见,我尝试将多个参数包定义为A类的模板参数.
不幸的是,代码无法编译:
error: expected nested-name-specifier before ‘Ts’
如何为此示例定义多个参数包?
解决方法
实现最终目标的一种方法是使用嵌套模板:
template< size_t... N_i> class initial_values { public: template <typename Ts...> class A { // ... private: std::vector<size_t> _v = { N_i... }; std::tuple<Ts...> _t; }; };
然后可以引用模板,例如:
initial_values<1,2,3>::A<int,char> a;