如何将将参数包作为参数传递给其他模板类的模板类?

how can i pass template class which take parameter pack to other template class as a parameter?

本文关键字:其他 参数传递 参数 包作      更新时间:2023-10-16

我有这样的东西:

template<int ... args>
class X{};

并希望将该类作为参数传递给第二个模板类。 现在我有:

template<class X<int... args1> el1, class X<int... args2> el2>
class Y{};

编译器Pack expansion does not contain any unexpanded parameter packs抛出错误给我,我真的不知道我能做什么......我已经尝试了很多可能的int...args顺序,但它仍然不起作用。我怎样才能让它工作?

我想做这样一段代码编译

Y<X<1,2>,X<3,4>> el;

您似乎正在寻找模板模板参数,这些参数具有以下语法:

template<template <int... args1> typename el1, 
template <int... args2> typename el2>
class Y{};

请注意,在 c++17 之前,您必须在此处使用关键字class而不是typename