¿Beneficios de usar reference_wrapper en lugar de puntero sin formato en contenedores?
Qué beneficios tiene usarstd::reference_wrapper
como parámetro de plantilla de contenedores en lugar de punteros sin formato? Es decirstd::vector<std::reference_wrapper<MyClass> >
vs.std::vector<MyClass*>
e gusta olvidar los valores nulos y no tener que usar la sintaxis del puntero, sino la verbosidad de los tipos (es decir,vector<reference_wrapper<MyClass> >
) además de que el sitio de la llamada use std :: ref para ajustar la referencia real me hace pensar que no vale la pena.
Me refiero a casos en los que usar std :: shared_ptr o cualquier otro puntero inteligente no es una opción.
¿Existen otros beneficios de usar reference_wrapper o algún otro factor que actualmente no estoy teniendo en cuenta? (Creo que mi pregunta se aplica tanto a la referencia de envoltura de C ++ 11 como a la de impulso)