class StringHash { unsigned m_val; template unsigned _Hash(const char (&str)[N]) { typedef const char (&truncated_str)[N-1]; return str[N-1] + 65599 * _Hash((truncated_str)str); } unsigned _Hash(const char (&str)[2]) { return str[1] + 65599 * str[0]; } public: template StringHash(const char (&str)[N]) { m_val = _Hash(str); } operator unsigned() { return m_val; } }; StringHash("testString"); // 이..