![]() |
1
10
你的问题有点令人困惑。起初我以为你在问
当使用类模板的名称时(
可以省略模板参数列表 用于类模板定义中的类模板名称。例如,复制构造函数可以声明为
而不是
这只是一点句法上的甜头,允许你少打字。 但是,在类模板定义之外,您需要显式地拼出所有模板参数。对于派生类也是如此:
当编译器首先遇到您的模板时,只有它的定义,而且编译器还没有看到任何实例化。编译器不知道在实例化点上模板是否在作用域内有专门化。但是,您可以将模板专门用于
结果是,如果您需要引用
|
![]() |
2
8
如果省略
这与名称查找规则(依赖的基类)有关。 C++ 03〔14.6/8〕说
现在
所以你有两个选择。
|
![]() |
3
2
在编译器读取模板的时候(而不是当它声明模板的时候),它无法分辨出
我认为(检查一下,我不确定)
|
![]() |
4
2
C++标准要求编译器对模板进行“两阶段查找”。也就是说,当解析模板时,他们试图解析第一阶段中的所有非依赖名称(不依赖于模板参数的名称),而当实例化模板时,他们试图解析第二阶段中的所有依赖名称。
如果你没有资格
|
![]() |
5
0
那
或者,在“派生”范围内具有using声明也是一种有效的技术。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |