Почему этот параметр шаблона по умолчанию не разрешен?

У меня есть следующий класс:

template <typename Type = void>
class AlignedMemory {
public:
    AlignedMemory(size_t alignment, size_t size)
        :   memptr_(0) {
        int iret(posix_memalign((void **)&memptr_, alignment, size));
        if (iret) throw system_error("posix_memalign");
    }
    virtual ~AlignedMemory() {
        free(memptr_);
    }
    operator Type *() const { return memptr_; }
    Type *operator->() const { return memptr_; }
    //operator Type &() { return *memptr_; }
    //Type &operator[](size_t index) const;
private:
    Type *memptr_;
};

И попытаться создать экземпляр автоматической переменной, подобной этой:

AlignedMemory blah(512, 512);

Это дает следующая ошибка:

src / cpfs / entry.cpp: 438: ошибка: отсутствуют аргументы шаблона перед 'blah'

Что я делаю неправильно? Является ли void недопустимым параметром по умолчанию?

6
задан Matt Joiner 9 January 2011 в 13:09
поделиться