頭の体操です。 int main(void) { return CompileTimeHash("abcdefghijklmnopqrstu"); }が、 mov $12345, %eax のような形にコンパイルされればOKとします(最適化をかけて即値になればOK)。テンプレートの再帰を使うことになると思いますが、再帰がunrollされただけの形は当然NG、マクロの使用もNGとします。 .....答えは! #include <cstddef> template <std::size_t N> inline int accum(const char (&str)[N]) { return str[N - 1] + accum(reinterpret_cast<const char (&)[N-1]>(str)); } template<> inline int accum<1>(const