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