私は C++ テンプレートを初めて使用し、これらの C++ テンプレート関連のコードに遭遇しましたが、その意味を理解できません。
class StringBuffer
{
CharBuffer cb;
..
template <size_t ArrayLength>
bool append(const char (&array)[ArrayLength]) {
return cb.append(array, array + ArrayLength - 1); /* No trailing '\0'. */
}
};
bool append(const char (&array)[ArrayLength])とはどういう意味ですか? 関数テンプレートは、特定の ArrayLength を持つパラメーターを取る何かにインスタンス化されるようです。しかし、関数の引数リストで配列の長さを指定することはできませんか? また、const char (&array)とはどういう意味ですか? const char &(括弧なし)のようなものであるべきではありませんか?
David Vandevoorde/Nicolai M.Josuttis による C++ Templates The Complete Guideという本を読んでいますが、この本のどの部分で上記の構文が説明されていますか?