Issue https://github.com/microsoft/GSL/issues/550 highlighted overhead in not_null::get for larger types such as shared_ptr. Every call to get would return a copy of the contained value.
This PR implements Herb's suggestion for changing the return type of not_null::get. The not_null's value will now only be copied if it is "trivially copyable"; otherwise, it will be returned by const reference.
Note: this change also forces the returned copy to be const.
Issue https://github.com/microsoft/GSL/issues/550 highlighted overhead in
not_null::get
for larger types such asshared_ptr
. Every call toget
would return a copy of the contained value. This PR implements Herb's suggestion for changing the return type ofnot_null::get
. Thenot_null
's value will now only be copied if it is "trivially copyable"; otherwise, it will be returned by const reference. Note: this change also forces the returned copy to beconst
.