#include <iostream>
#include <cstddef>
template <typename T, std::size_t first, std::size_t ... rest>
struct generate_dimensions
{
using type = typename generate_dimensions<T, rest...>::type[first];
};
template <typename T, std::size_t first>
struct generate_dimensions<T, first>
{
using type = T[first];
};
template <typename T, std::size_t first, std::size_t ... rest>
using generate_dimensions_t = typename generate_dimensions<T, first, rest...>::type;
int main() {
std::cout << sizeof(generate_dimensions_t<char, 2, 3>);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2luY2x1ZGUgPGNzdGRkZWY+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgZmlyc3QsIHN0ZDo6c2l6ZV90IC4uLiByZXN0PgpzdHJ1Y3QgZ2VuZXJhdGVfZGltZW5zaW9ucwp7Cgl1c2luZyB0eXBlID0gdHlwZW5hbWUgZ2VuZXJhdGVfZGltZW5zaW9uczxULCByZXN0Li4uPjo6dHlwZVtmaXJzdF07Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgZmlyc3Q+CnN0cnVjdCBnZW5lcmF0ZV9kaW1lbnNpb25zPFQsIGZpcnN0Pgp7Cgl1c2luZyB0eXBlID0gVFtmaXJzdF07Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgZmlyc3QsIHN0ZDo6c2l6ZV90IC4uLiByZXN0Pgp1c2luZyBnZW5lcmF0ZV9kaW1lbnNpb25zX3QgPSB0eXBlbmFtZSBnZW5lcmF0ZV9kaW1lbnNpb25zPFQsIGZpcnN0LCByZXN0Li4uPjo6dHlwZTsKCmludCBtYWluKCkgewoJc3RkOjpjb3V0IDw8IHNpemVvZihnZW5lcmF0ZV9kaW1lbnNpb25zX3Q8Y2hhciwgMiwgMz4pOwp9