Привет всем!
Хочу разъяснить для себя некоторые вопросы. Когда пытаюсь сделать так:
template <typename T>
class Stack
{
private:
std::vector<T> elems;
public:
void push(T const&);
void pop();
T top() const;
bool empty() const
{
return elems.empty();
}
};
template <typename T, typename CONT = std::vector>
class Stack
{
private:
CONT elems;
public:
void push(T const&);
void pop();
T top() const;
};
в VS, то получаю ругань "error C2977: 'Stack' : too many template arguments", а если переименовываю второй класс в Stack2, то все ок.
1. Т. е. я правильно понимаю, что два таких шаблона класса нельзя создать?
2. Кстати, почему-то пока не пытаюсь создать объект, то не ругается на то, что vector без типа у меня задан, хотя должно быть по идее vector<T>... Это тоже нормально?