Browse Source

Merge pull request #32 from vczf/master

修复文字错误
wuye9036 7 years ago
parent
commit
4d19a6475a
1 changed files with 3 additions and 3 deletions
  1. 3 3
      ReadMe.md

+ 3 - 3
ReadMe.md

@@ -452,12 +452,12 @@ float i = c_style_cast<int, float>(v);
 
 嗯,很顺利的通过了。难道C++不能支持让参数推导一部分模板参数吗?
 
-当然是可以的。只不过在部分推导、部分指定的情况下,编译器对模参数的顺序是有限制的:先写需要指定的模板参数,再把能推导出来的模板参数放在后面。
+当然是可以的。只不过在部分推导、部分指定的情况下,编译器对模参数的顺序是有限制的:先写需要指定的模板参数,再把能推导出来的模板参数放在后面。
 
 在这个例子中,能推导出来的是 `SrcT`,需要指定的是 `DstT`。把函数模板写成下面这样就可以了:
 
 ``` C++
-template <typename DstT, typename SrcT> DstT c_style_cast(SrcT v)	// 模参数 DstT 需要人肉指定,放前面。
+template <typename DstT, typename SrcT> DstT c_style_cast(SrcT v)	// 模参数 DstT 需要人肉指定,放前面。
 {
     return (DstT)(v);
 }
@@ -1370,7 +1370,7 @@ template <typename T> foo(T& v0, C& v1){
 1. 函数`foo`中的变量`v1`已经确定是`struct C`的实例,所以,`v1.a = 2;`会导致编译错误,`v1.c = 3;`是正确的代码;
 2. 对于变量`v0`来说,这个问题就变得很微妙。如果`v0`是`struct A`或者`struct AB`的实例,那么`foo`中的语句`v0.a = 1;`就是正确的。如果是`struct C`,那么这段代码就是错误的。
 
-因此在模板定义的地方进行语义分析,并不能**完全**得出代码是正确或者错误的结论,只有到了实例化阶段,确定了模参数的类型后,才知道这段代码正确与否。令人高兴的是,在这一问题上,我们和C++标准委员会的见地一致,说明我们的C++水平已经和Herb Sutter不分伯仲了。既然我们和Herb Sutter水平差不多,那凭什么人家就吃香喝辣?下面我们来选几条标准看看服不服:
+因此在模板定义的地方进行语义分析,并不能**完全**得出代码是正确或者错误的结论,只有到了实例化阶段,确定了模参数的类型后,才知道这段代码正确与否。令人高兴的是,在这一问题上,我们和C++标准委员会的见地一致,说明我们的C++水平已经和Herb Sutter不分伯仲了。既然我们和Herb Sutter水平差不多,那凭什么人家就吃香喝辣?下面我们来选几条标准看看服不服:
 
 > **14.6 名称解析(Name resolution)**