#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( )
{
typedef SSS< "" > S_TY;
static_assert( sizeof ( count_of_array( "" ) ) == 1 , "It is not a compiletime array" ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNvbnN0ZXhwciBzaXplX3QgZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplKCkKewogIHJldHVybiBzaXplb2YoX19QUkVUVFlfRlVOQ1RJT05fXyk7Cn0KCnN0YXRpY19hc3NlcnQoODcgPT0gZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplPGludD4oKSwgImludmFsaWQgc2l6ZSIpOwpzdGF0aWNfYXNzZXJ0KDkwID09IGdldF9wcmV0dHlfZnVuY3Rpb25fc2l6ZTxkb3VibGU+KCksICJpbnZhbGlkIHNpemUiKTsKc3RhdGljX2Fzc2VydCgxMTYgPT0gZ2V0X3ByZXR0eV9mdW5jdGlvbl9zaXplPHN0ZDo6c3RyaW5nPigpLCAiaW52YWxpZCBzaXplIik7Cgp0ZW1wbGF0ZSA8aW50IFNTPiBzdHJ1Y3Qgc2l6ZW9mX3N0cnVjdCB7IGNoYXIgYV9fW1NTXTsgfTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgU2l6ZT4KaW5saW5lIHNpemVvZl9zdHJ1Y3Q8U2l6ZT4gY291bnRfb2ZfYXJyYXkoVCAoJmEpW1NpemVdKSB7fQp0ZW1wbGF0ZSA8Y2hhciBjb25zdCogQz4gc3RydWN0IFNTUzsKaW50IG1haW4oKQp7CiAgIHR5cGVkZWYgU1NTPCIiPiBTX1RZOwogICBzdGF0aWNfYXNzZXJ0KHNpemVvZihjb3VudF9vZl9hcnJheSgiIikpID09IDEsICJJdCBpcyBub3QgYSBjb21waWxldGltZSBhcnJheSIpOwp9