Shouldn't the type be checked here? I mean if it's an operator overload for a user-defined type it may not necessarily allocate.