¿Qué ventajas tiene usar std::reference_wrapper
como parámetro de plantilla de contenedores en lugar de punteros sin formato? Es decir std::vector<std::reference_wrapper<MyClass> >
vs std::vector<MyClass*>
¿Beneficios de usar reference_wrapper en lugar de puntero sin formato en contenedores?
me gusta olvidarse de los nulos y no tener que utilizar la sintaxis de puntero, pero el nivel de detalle de los tipos (es decir vector<reference_wrapper<MyClass> >
), además de tener la llamada std :: ref lugar de uso para envolver la referencia real me hace piensa 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.
¿Hay otros beneficios de usar reference_wrapper o cualquier otro factor que actualmente no estoy teniendo en cuenta? (Creo que mi pregunta se aplica tanto a la referencia_wrapper de C++ 11 como a la de refuerzo)
IMO, la no invalidación de referencia es una gran ventaja, que a menudo supera la verbosidad. Pero esta es solo una opinión de un odiado nulo experimentado. – kkm
@kkm mantiene este argumento con [not_null] (https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#i12-declare-a-pointer-that-must-not-be-null -as-not_null) punteros? – Woofas
@Woofas: Tal vez no. No estoy muy familiarizado con las últimas propuestas de idiomas. ¡Este ha estado fuera durante tres días! :) – kkm