move as much code as I can to member initializer list
validate the res_ pointer in the ctor, don't check it in the dtor