Какие преимущества имеет использование std::reference_wrapper
в качестве параметра шаблона контейнеров вместо необработанных указателей? Это std::vector<std::reference_wrapper<MyClass> >
vs. std::vector<MyClass*>
Мне нравится забывать о нулях и не использовать синтаксис указателя, но многословие типов (т.е. vector<reference_wrapper<MyClass> >
) плюс использование сайта вызова std:: ref для обертывания фактической ссылки заставляет меня думать, что это не стоит он.
Я имею в виду случаи, когда использование std:: shared_ptr или любого другого интеллектуального указателя не является вариантом.
Существуют ли другие преимущества использования reference_wrapper или любых других факторов, которые я в настоящее время не учитываю? (Я думаю, мой вопрос относится как к С++ 11 reference_wrapper, так и к boost)