#include <iostream>
template <typename T>
constexpr size_t get_pretty_function_size()
{
return sizeof(__PRETTY_FUNCTION__);
}
static_assert(87 == get_pretty_function_size<int>(), "invalid size");
static_assert(90 == get_pretty_function_size<double>(), "invalid size");
static_assert(116 == get_pretty_function_size<std::string>(), "invalid size");
template <int SS> struct sizeof_struct { char a__[SS]; };
template <typename T, int Size>
inline sizeof_struct<Size> count_of_array(T (&a)[Size]) {}
template <char const* C> struct SSS;
int main()
{
static_assert("1"[0] == '1', "It is not a compiletime array");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNvbnN0ZXhwciBzaXplX3QgZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplKCkKewogIHJldHVybiBzaXplb2YoX19QUkVUVFlfRlVOQ1RJT05fXyk7Cn0KCnN0YXRpY19hc3NlcnQoODcgPT0gZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplPGludD4oKSwgImludmFsaWQgc2l6ZSIpOwpzdGF0aWNfYXNzZXJ0KDkwID09IGdldF9wcmV0dHlfZnVuY3Rpb25fc2l6ZTxkb3VibGU+KCksICJpbnZhbGlkIHNpemUiKTsKc3RhdGljX2Fzc2VydCgxMTYgPT0gZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplPHN0ZDo6c3RyaW5nPigpLCAiaW52YWxpZCBzaXplIik7Cgp0ZW1wbGF0ZSA8aW50IFNTPiBzdHJ1Y3Qgc2l6ZW9mX3N0cnVjdCB7IGNoYXIgYV9fW1NTXTsgfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgU2l6ZT4KaW5saW5lIHNpemVvZl9zdHJ1Y3Q8U2l6ZT4gY291bnRfb2ZfYXJyYXkoVCAoJmEpW1NpemVdKSB7fQp0ZW1wbGF0ZSA8Y2hhciBjb25zdCogQz4gc3RydWN0IFNTUzsKaW50IG1haW4oKQp7CiAgIHN0YXRpY19hc3NlcnQoIjEiWzBdID09ICcxJywgIkl0IGlzIG5vdCBhIGNvbXBpbGV0aW1lIGFycmF5Iik7Cn0=