Для использования шаблона класса требуется список аргументов шаблона - программирование

Для использования шаблона класса требуется список аргументов шаблона

Я переместил реализацию методов из своего класса и обнаружил следующую ошибку:

use of class template requires template argument list

для метода whitch не требуется тип шаблона вообще... (для других методов все нормально)

Класс

template<class T>
class MutableQueue
{
public:
    bool empty() const;
    const T& front() const;
    void push(const T& element);
    T pop();

private:
    queue<T> queue;
    mutable boost::mutex mutex;
    boost::condition condition;
};

Неверная реализация

template<>   //template<class T> also incorrect
bool MutableQueue::empty() const
{
    scoped_lock lock(mutex);
    return queue.empty();
}
4b9b3361

Ответ 1

Это должно быть:

template<class T>
bool MutableQueue<T>::empty() const
{
    scoped_lock lock(mutex);
    return queue.empty();
}

И если ваш код такой короткий, просто вставьте его, так как вы все равно не можете разделить реализацию и заголовок класса шаблона.

Ответ 2

Использование:

template<class T>
bool MutableQueue<T>::empty() const
{
    ...
}