The ClonePtr
is a smart pointer which follows value semantics
for its pointee. The cloning, and deletion, procedure for the pointee
can be provided by the user. The default cloning behaviour (given by a
cloner) is as follows. If the pointee type contains a member
function clone()
, then that function is called to make a deep
copy of the pointee. Otherwise the copy constructor is called to
create the deep copy. The default deletion procedure (given by a
deleter) is simply to call delete
.