class A { ~A(); }; A::~A( int i ) {} Causes an internal compiler error. And it's not just theory - it caused problems for me when trying to compile a (badly-written) real life program.