I agree that auto ref may be a better option here, but I still see no reason to disallow it. It is a performance issue, not a safety one. And as you said this only works for templates, virtual functions are out of the game here. PS. opEquals issue is very annoying, indeed.