在第一次调用时,当我将
然而,当参数类型更改为
char const []
传递给具有参数 T const a
的模板函数时,T
推断为 char const *
,这是合理的,因为 const
指的是衰减指针。然而,当参数类型更改为
T const & a
时,T
推断为 char[7]
。从上面的角度来看,为什么 const
没有修饰整个数组类型呢?template <typename T>
void show1(T const a) {
// input is const char *
// T is char const *
// a is char const * const
}
template <typename T>
void show2(T const & a) {
// input is char const [7]
// T is char[7]
// a is char const (&)[7]
}
int main() {
const char s[] = "asdasd";
show1(s);
show2(s);
}
char const [7]
被视为const(char[7])
。2:由于参数类型是T const &
,因此T
被推断为char[7]
。 - BAKE ZQ