我似乎记得,在过去的时候,>在处理嵌套模板参数时,要警告不要将两个字符紧挨着(没有空格).我甚至模糊地记得声明向量的向量,并遇到这个编译错误.
但现在我发现编译可怕的东西绝对没有错>>...
我的问题是这样的:
该公约在什么时候成为可接受的做法?
它是标准C++的一部分吗?
它是否始终是标准的一部分,我在大学里使用的编译器(以及我所拥有的教授)只是不支持它?
也许这些问题有点历史,但对我而言,正确的历史背景似乎使得实际的记忆变得微不足道.
#include <iostream>
using namespace std;
template<class T>
class people{
public:
virtual void insert(T item)=0;
virtual T show(T info)=0;
};
template<class T>
class name
{
private:
T fname;
T lname;
public:
name(T first, T last);
// bool operator== (name & p1, name &p2)
};
template <class T>
name<T>::name(T first, T last){
fname = first;
lname = last;
}
template <class T>
class person : public people<T>
{
private:
T a[1];
int size;
public:
person();
virtual void insert(T info);
virtual T show(); …Run Code Online (Sandbox Code Playgroud) 这编译:
std::map<int, std::vector<int> > vDescriptorAtom;
这:
std::map<int, std::vector<int>> vDescriptorAtom;
给出以下错误:
src/MessageHandler.cpp:191: error: >> should be > > within a nested template argument list
这显然是因为>>是一个运算符。但是看看 GCC 抛出的错误,我无法理解它想说什么。“嵌套模板参数列表”是什么意思。谢谢。