Search⌘ K
AI Features

Variadic Alias Templates

Explore how to implement variadic alias templates in C++, which provide aliases for families of types with varying template parameters. Understand examples including class templates and standard library integer sequences to enhance your template metaprogramming skills.

Implementing variadic alias templates

Everything that can be templatized can also be made variadic. An alias template is an alias (another name) for a family of types. A variadic alias template is a name for a family of types with a variable number of template parameters. With the knowledge accumulated so far, it should be fairly easy to write alias templates. Let’s see an example:

template<typename T, typename... Args>
struct foo
{
};
template<typename... Args>
using int_foo = foo<int, Args...>;
Implementation for an alias template

The class template foo is variadic and takes at least one type template argument. int_foo, on the other hand, is only a different name for a family of types instantiated from the foo type with int as the first type template arguments. These could be used as follows:

C++ 17
foo<double, char, int> f1;
foo<int, char, double> f2;
int_foo<char, double> f3;
static_assert(std::is_same_v<decltype(f2), decltype(f3)>);
...