After talking with Robert, this code is needed when working with raw pointers. Moving to smart pointers will ameliorate the situation (and greatly simplify the communicator interface).