template<typename T>
struct foo
{
T* p;
foo(T* x) : p(x) {}
~foo() { if(p) delete p; }
T& operator*() const { return *p; }
};
int main()
{
foo<int> i(new int);
foo<void> v(new int); // <= illegal use of type 'void'
}
Если T = void, тогда я не хочу реализовывать оператор * (). Как мне этого добиться? Я не хочу специализировать класс, потому что в моем классе есть много других методов.
PS: Обратите внимание, что это всего лишь пример, объясняющий мою проблему.