我是 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++ 模板完整指南》一书,这本书的哪一部分涵盖了上述语法?