#include <iostream>

template <typename T>
inline void pushstring(T str);

template <int N>
inline void pushstring(const char (&str) [N])
{
   std::cout << N << std::endl;
}

template <>
inline void pushstring(const char *str)
{
   std::cout << str << std::endl;
}

int main()
{
  const char *x = "Hello?";
  pushstring(1);
  pushstring(x);
  pushstring("Hi");
}