Delayed the evaluation of the member function template return type until instantiation time.
Delayed the evaluation of the member function template return type until instantiation time.

Because the type of *this is already known while defining the member function template, the trailing return type is already partially evaluated.

- Wrapped the type of *this inside a Delayed meta function, which although being an identity function, causes the evaluation to be delayed. This is because of the dependence on the additional template parameters, that can only be evaluated at instantiation time of the member function template (i.e. when calling the member function).

erikvalkering/smartref,erikvalkering/smartref,erikvalkering/smartref