下面的代码无法编译:
如果我将
template <int N>
void f(char[N]) {}
int main() {
char buf[10];
f(buf);
}
如果我将
char[N]
更改为char (&)[N]
,它就可以工作了。那么它们之间有何区别?
template <int N> void f(char *) {}
相同,然后无法从调用中推断出N
。对于char(&)[N]
,不适用任何调整,因此可以推断出N
。 - M.M