I think you should have keeper& as return value

It's quite useful when building expresions with the sideeffect-paradigm

For instance:

char source[10]="something";
char* copy=strncpy(new char[10],source,10);