In general, using a non const reference like Ref<T>&
is never a good idea because this will only work if the caller already has a Ref<T>
object at hand. This discards 5 and 7.
The cases 3 and 4 does not make sense, and they won't compile in general.
Then, there is not much difference between a const Ref<const T>
and a const Ref<const T>&
because it is unlikely that the function is called with an existing Ref<const T>
object, and so a Ref<const T>
will have to be created in most cases anyway. Nevertheless, we could still recommend 1 over 2 or 6.
So in summary, we could recommend Ref<T>
for a writable reference, and const Ref<const T>&
for a const reference.
The option 6, Ref<const T>
, might still be interesting if you want to change the matrix that is referenced (not its content) through a call to Ref
constructor using placement new.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…