Использую тип
typedef boost::shared_ptr< type > type_shared;
Только сейчас заметил, что когда я пишу const type_shared или const type_shared&, то констатнтым является оболочка смартпойнтера, но не указатель, который она хранит.
Соответственно, решил, что следует определить два типа:
typedef boost::shared_ptr< type > type_shared;
typedef boost::shared_ptr< const type > type_shared_const;
Вопросы:
1) (глупый) Так все и делают?
2) Если у меня есть type_shared, а в функцию нужно передать type_shared_const, что при этом происходит? Неявное конструирование type_shared_const из type_shared? Дает ли это какой-то оверхед в runtime, или все разрешается в compile time?
Спасибо.