#include <iostream>
using namespace std;
template <int N>
struct pow2
{
enum { value = 2 * pow2<N - 1>::value };
};
template <>
struct pow2<0>
{
enum { value = 1 };
};
int main()
{
const int x = pow2<4>::value; // == 16
const int y = pow2<0>::value; // == 1
char arr[x]; // Because x is constant
cout << "Array size is " << sizeof arr << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGludCBOPgpzdHJ1Y3QgcG93MiAKewogICAgZW51bSB7IHZhbHVlID0gMiAqIHBvdzI8TiAtIDE+Ojp2YWx1ZSB9Owp9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IHBvdzI8MD4gCnsKICAgIGVudW0geyB2YWx1ZSA9IDEgfTsKfTsKCmludCAgbWFpbigpCnsKICAgIGNvbnN0IGludCB4ID0gcG93Mjw0Pjo6dmFsdWU7IC8vID09IDE2CiAgICBjb25zdCBpbnQgeSA9IHBvdzI8MD46OnZhbHVlOyAvLyA9PSAxCiAgICBjaGFyIGFyclt4XTsgLy8gQmVjYXVzZSB4IGlzIGNvbnN0YW50CiAgICBjb3V0IDw8ICJBcnJheSBzaXplIGlzICIgPDwgc2l6ZW9mIGFyciA8PCBlbmRsOwp9Cgo=