Taking a reference to then take a pointer is unexpected and means that the object must be copied when passed around by user code.