Глупый вопрос, но скажем, у вас класс Foo:
class Foo
{
public:
typedef boost::shared_ptr<Foo> RcPtr;
void non_const_method() {}
void const_method() const {}
};
Наличие const Foo :: RcPtr не препятствует вызову неконстантных методов для класса, компилируется следующее:
#include <boost/shared_ptr.hpp>
int main()
{
const Foo::RcPtr const_foo_ptr(new Foo);
const_foo_ptr->non_const_method();
const_foo_ptr->const_method();
return 0;
}
Но присвоение имени typedef ConstRcPtr подразумевает для меня, что typedef будет
typedef const boost::shared_ptr<Foo> ConstRcPtr;
это не то, что меня интересует. Имя более странное, но, возможно, более точное: RcPtrConst:
typedef boost::shared_ptr<const Foo> RcPtrConst;
Однако Googling для RcPtrConst получает ноль хитов, поэтому люди не используют это как имя определения типа:)
У кого-нибудь есть другие предложения?