Вопросы про шаблоны
От: XJess  
Дата: 09.11.10 15:32
Оценка:
Привет всем!
Хочу разъяснить для себя некоторые вопросы. Когда пытаюсь сделать так:

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>... Это тоже нормально?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.