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