Does the internal detail of using a pointer need to be reflected in the visible API here?  Or could you just initialise as a pointer internally converting the reference to a pointer with client(&client) which would prevent the user from passing in null to the ctor?