関数テンプレートでは、型がバインドされるようなので、 こんな書き方ができるみたいです。 template <size_t N> unsigned int foo(const char (&str)[N]) { return N; } int main(void) { std::cout << foo("foo") << std::endl; return 0; } これはstrを参照で渡しているからできることですね。 # 型がconst char [4]になります Cじゃ配列数は渡せないんじゃないかなあ・・・ これの元になったコードを見たときに、 Nがどこから来ているのか分からなかったので、びっくりしました。 というわけで、脈絡もなく階乗のコード置いておきますね。 template <size_t N> unsigned int foo(const char (&str)[N]) { re