Я попытался ввести некоторую корректность const
(фактически функциональные парадигмы) к некоторому новому коду и обнаружил, что я не могу передать std::shared_ptr<A>
функции, ожидающей std::shared_ptr<A const>
. Обратите внимание, что я не хочу отбрасывать константу, но вводить ее, что является законным с исходными указателями.
Есть ли способ обойти это? Я не нашел функцию-член для этого.
Точная ошибка, произнесенная g++ 4.6.1, такова:
error: no matching function for call to ‘foo(std::shared_ptr<A>)’
note: candidate is:
note: template<class T> std::shared_ptr<_Tp> foo(std::shared_ptr<const _Tp>)