#include int foo(int) { return 0; } template int foo(const T*) { return 1; } template int foo(const T (&a)[N]) { return N; } int main() { int i = foo("hi"); }