ドキュメントのエラーや頭痛に苦しんでいるのかどうかわからないので...
私がやりたいのは、所有権を別の人と共有するが、オブジェクト全体ではなくオブジェクトのメンバーを参照するshared_ptrを作成することです。簡単な例、出発点...
struct s
{
int a, b;
};
shared_ptr<s> s1 (new s); // pointing to whole object
en.cppreference.comから、shared_ptrのコンストラクター(8)は...
template< class Y >
shared_ptr( const shared_ptr<Y>& r, T *ptr );
説明には、「所有権情報をrと共有するが、ptrがrによって管理されるオブジェクトのメンバーである一般的なユースケースのように、無関係で管理されていないポインターptrを保持するshared_ptrを構築する」と記載されています。
だから...T
そのコンストラクターのテンプレートから誤って見落とされたのですか、それとも何かが足りないのですか?実際、Yは私にも間違っているように見えますが、一般的に、そのコンストラクターは正しく記述されていますか?
私ができることを望んでいるのはこのようなものです...
shared_ptr<int> s2 (s1, &(s1.get ()->a));
s2
a
メンバー(an )を指しint
ますが、オブジェクト全体の所有権を。と共有しs1
ます。
それは正気ですか?