From 85a1ca90043b2fd85627085378bd2819fa8b8e1a Mon Sep 17 00:00:00 2001 From: AndyJMR Date: Fri, 13 Nov 2020 17:11:14 +0800 Subject: [PATCH] Modify the bold in item 1 --- 1.DeducingTypes/item1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.DeducingTypes/item1.md b/1.DeducingTypes/item1.md index edd3a9c..c2e2594 100644 --- a/1.DeducingTypes/item1.md +++ b/1.DeducingTypes/item1.md @@ -138,7 +138,7 @@ void f(T param); //传值 const char* const ptr = //ptr是一个常量指针,指向常量对象 " Fun with pointers"; ```` -在这里,解引用符号(\*)的右边的const表示ptr本身是一个const:ptr不能被修改为指向其它地址,也不能被设置为null(解引用符号左边的const表示ptr指向一个字符串,这个字符串是const,因此字符串不能被修改)。当ptr作为实参传给f,像这种情况,ptr自身会传值给形参,根据类型推导的第三条规则,**ptr**自身的常量性将会被省略,所以param是**const char* **。也就是说一个常量指针指向const字符串,在类型推导中这个指针指向的数据的常量性将会被保留,但是指针自身的常量性将会被忽略。 +在这里,解引用符号(\*)的右边的const表示ptr本身是一个const:ptr不能被修改为指向其它地址,也不能被设置为null(解引用符号左边的const表示ptr指向一个字符串,这个字符串是const,因此字符串不能被修改)。当ptr作为实参传给f,像这种情况,ptr自身会传值给形参,根据类型推导的第三条规则,**ptr**自身的常量性将会被省略,所以param是** const char\* **。也就是说一个常量指针指向const字符串,在类型推导中这个指针指向的数据的常量性将会被保留,但是指针自身的常量性将会被忽略。 ## 数组实参 上面的内容几乎覆盖了模板类型推导的大部分内容,但这里还有一些小细节值得注意,比如在模板类型推导中指针不同于数组,虽然它们两个有时候是完全等价的。关于这个等价最常见的例子是在很多上下文中数组会退化为指向它的第一个元素的指针,比如下面就是允许的做法: