模板:名称解析-->;有谁能为这句话举出另一个例子吗 这是ISO C++标准14.6/8:< /P>的陈述。
查找模板定义中使用的名称声明时,通常的查找规则用于非依赖名称。依赖于模板参数的名称的查找将推迟,直到知道实际的模板参数(14.6.2) 例如:模板:名称解析-->;有谁能为这句话举出另一个例子吗 这是ISO C++标准14.6/8:< /P>的陈述。,c++,templates,C++,Templates,查找模板定义中使用的名称声明时,通常的查找规则用于非依赖名称。依赖于模板参数的名称的查找将推迟,直到知道实际的模板参数(14.6.2) 例如: #include <iostream> using namespace std; template<class T> class Set { T* p; int cnt; public: Set(); Set<T&
#include <iostream>
using namespace std;
template<class T> class Set {
T* p;
int cnt;
public:
Set();
Set<T>(const Set<T>&);
void printall()
{
for (int i = 0; i<cnt; i++)
cout << p[i] << ’\n’;
}
// ...
};
#包括
使用名称空间std;
模板类集{
T*p;
int-cnt;
公众:
Set();
集合(常数集&);
void printall()
{
对于(inti=0;iT*p;
...
对于(int i=0;i仅查看模板,您能否告诉我p[i]
的类型是什么?否。Set
中p[i]
的类型将是int
;p[i]的类型Set
中的将是std::string
。因此,操作符模板的查找具有依赖名称
和非依赖名称
的概念。简单地说,依赖名称是以某种方式依赖于模板参数的名称。在代码“T*p”中,使“p”成为依赖名称,因为它依赖于模板参数T
现在cout
T* p;
...
for (int i = 0; i<cnt; i++)
cout << p[i] << ’\n’;
// In Set<T>
void reverse()
{
for (int i = 0; i <= cnt-i; ++i)
{
using std::swap;
swap(p[i], p[cnt-i]);
}
}
ostream& operator << (ostream &os, T const &t);