this thing: (since C++17 due to template template)
#include <cstddef>
#include <vector>
template< template<typename...> typename X1, typename T1, typename T2, size_t v1, size_t v2, typename... Args>
void func(X1<char> p1, T1 p2, T2 p3, size_t p4, size_t p5, Args&&... args)
{
}
template< template<typename...> typename X1, typename T1, typename T2, size_t v1, size_t v2, typename... Args>
class Val
{
};
int main()
{
func<std::vector, int, int, 1,2, char, char, char>({}, 0,0,0,0, 'a', 'a', 'a');
Val<std::vector, int, int, 1,2, char, char, char> localObj;
}
based on what I assume should be:
The global template function func takes the parameters
a template template type X1,
a template type T1,
a template type T2,
a template size_t value v1,
a template size_t value t2,
a variadic template type Args
and takes the arguments
p1 which is of the type X1 with the template types char,
p2 which is of the type T1,
p3 which is of the type T2,
p4 which is of the type size_t,
p5 which is of the type size_t,
args which is of the type a variadic argument pack of rvalue references to the type Args
The global template class Val is declared with the template types
a template template type X1,
a template type T1,
a template type T2,
a template size_t value v1,
a template size_t value t2,
a variadic template type Args
is my terminology correct?