mirror of
https://github.com/wuye9036/CppTemplateTutorial.git
synced 2024-03-22 13:11:16 +08:00
Updated format of referenced text.
This commit is contained in:
parent
0fff42ce4b
commit
24fbf47ad3
25
ReadMe.md
25
ReadMe.md
|
@ -1334,21 +1334,30 @@ template <typename T> foo(T& v0, C& v1){
|
||||||
|
|
||||||
因此在模板定义的地方进行语义分析,并不能**完全**得出代码是正确或者错误的结论,只有到了实例化阶段,确定了模版参数的类型后,才知道这段代码正确与否。令人高兴的是,在这一问题上,我们和C++标准委员会的见地一致,说明我们的C++水平已经和Herb Sutter不分伯仲了。既然我们和Herb Sutter水平差不多,那凭什么人家就吃香喝辣?下面我们来选几条标准看看服不服:
|
因此在模板定义的地方进行语义分析,并不能**完全**得出代码是正确或者错误的结论,只有到了实例化阶段,确定了模版参数的类型后,才知道这段代码正确与否。令人高兴的是,在这一问题上,我们和C++标准委员会的见地一致,说明我们的C++水平已经和Herb Sutter不分伯仲了。既然我们和Herb Sutter水平差不多,那凭什么人家就吃香喝辣?下面我们来选几条标准看看服不服:
|
||||||
|
|
||||||
> ###14.6 名称解析(Name resolution)
|
> **14.6 名称解析(Name resolution)**
|
||||||
|
|
||||||
> **1)** 模板定义中能够出现以下三类名称:
|
> **1)** 模板定义中能够出现以下三类名称:
|
||||||
|
|
||||||
> —— 模板名称、或模板实现中所定义的名称;
|
> * 模板名称、或模板实现中所定义的名称;
|
||||||
> —— 和模板参数有关的名称;
|
> * 和模板参数有关的名称;
|
||||||
> —— 模板定义所在的定义域内能看到的名称。
|
> * 模板定义所在的定义域内能看到的名称。
|
||||||
|
|
||||||
> …
|
> …
|
||||||
|
|
||||||
> **9)** … 如果名字查找和模板参数有关,那么查找会延期到模板参数全都确定的时候。 …
|
> **9)** … 如果名字查找和模板参数有关,那么查找会延期到模板参数全都确定的时候。 …
|
||||||
|
|
||||||
> **10)** 如果(模板定义内出现的)名字和模板参数无关,那么在模板定义处,就应该找得到这个名字的声明。…
|
> **10)** 如果(模板定义内出现的)名字和模板参数无关,那么在模板定义处,就应该找得到这个名字的声明。…
|
||||||
> ###14.6.2 依赖性名称(Dependent names)
|
|
||||||
> **1)** …(模板定义中的)表达式和类型可能会依赖于模板参数,并且模板参数会影响到名称查找的作用域 … 如果表达式中有操作数依赖于模板参数,那么整个表达式都依赖于模板参数,名称查找延期到**模板实例化时**进行。并且定义时和实例化时的上下文都会参与名称查找。(依赖性)表达式可以分为类型依赖(类型指模板参数的类型)或值依赖。
|
> **14.6.2 依赖性名称(Dependent names)**
|
||||||
> ####14.6.2.2 **类型依赖的表达式**
|
|
||||||
|
> **1)** …(模板定义中的)表达式和类型可能会依赖于模板参数,并且模板参数会影响到名称查找的作用域 … 如果表达式中有操作数依赖于模板参数,那么整个表达式都依赖于模板参数,名称查找延期到**模板实例化时**进行。并且定义时和实例化时的上下文都会参与名称查找。(依赖性)表达式可以分为类型依赖(类型指模板参数的类型)或值依赖。
|
||||||
|
|
||||||
|
> **14.6.2.2 类型依赖的表达式**
|
||||||
|
|
||||||
> **2)** 如果成员函数所属的类型是和模板参数有关的,那么这个成员函数中的`this`就认为是类型依赖的。
|
> **2)** 如果成员函数所属的类型是和模板参数有关的,那么这个成员函数中的`this`就认为是类型依赖的。
|
||||||
> ###14.6.3 非依赖性名称(Non-dependent names)
|
|
||||||
|
> **14.6.3 非依赖性名称(Non-dependent names)**
|
||||||
|
|
||||||
> **1)** 非依赖性名称在**模板定义**时使用通常的名称查找规则进行名称查找。
|
> **1)** 非依赖性名称在**模板定义**时使用通常的名称查找规则进行名称查找。
|
||||||
|
|
||||||
[Working Draft: Standard of Programming Language C++, N3337][1]
|
[Working Draft: Standard of Programming Language C++, N3337][1]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user