#include <type_traits>
#include <array>
#include <iostream>
template<bool Condition, template<typename...> class T, template<typename...> class U>
struct Conditional
{
template<typename... Args>
using Type = T<Args...>;
};
template<template<typename...> class T, template<typename...> class U>
struct Conditional<false, T, U>
{
template<typename... Args>
using Type = U<Args...>;
};
template<typename T, typename Size>
using Array = std::array<T, Size::value>;
template<typename T, typename Size>
using BigArray = std::array<T, Size::value * 2>;
int main()
{
Conditional<true, Array, BigArray>::Type<int, std::integral_constant<std::size_t, 42>> Foo;
std::cout << Foo.size() << '\n';
Conditional<false, Array, BigArray>::Type<int, std::integral_constant<std::size_t, 42>> Bar;
std::cout << Bar.size() << '\n';
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPGJvb2wgQ29uZGl0aW9uLCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4gY2xhc3MgVCwgdGVtcGxhdGU8dHlwZW5hbWUuLi4+IGNsYXNzIFU+CnN0cnVjdCBDb25kaXRpb25hbAp7Cgl0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgoJdXNpbmcgVHlwZSA9IFQ8QXJncy4uLj47Cn07CnRlbXBsYXRlPHRlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBULCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLj4gY2xhc3MgVT4Kc3RydWN0IENvbmRpdGlvbmFsPGZhbHNlLCBULCBVPgp7Cgl0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgoJdXNpbmcgVHlwZSA9IFU8QXJncy4uLj47Cn07Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBTaXplPgp1c2luZyBBcnJheSA9IHN0ZDo6YXJyYXk8VCwgU2l6ZTo6dmFsdWU+OwoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2l6ZT4KdXNpbmcgQmlnQXJyYXkgPSBzdGQ6OmFycmF5PFQsIFNpemU6OnZhbHVlICogMj47CiAgCmludCBtYWluKCkgCnsgCglDb25kaXRpb25hbDx0cnVlLCBBcnJheSwgQmlnQXJyYXk+OjpUeXBlPGludCwgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgNDI+PiBGb287CglzdGQ6OmNvdXQgPDwgRm9vLnNpemUoKSA8PCAnXG4nOwoJCglDb25kaXRpb25hbDxmYWxzZSwgQXJyYXksIEJpZ0FycmF5Pjo6VHlwZTxpbnQsIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8c3RkOjpzaXplX3QsIDQyPj4gQmFyOwoJc3RkOjpjb3V0IDw8IEJhci5zaXplKCkgPDwgJ1xuJzsKfQ==