次のweak_ptrのコンストラクタの2のとおりです。(memory
から) http://msdn.microsoft.com/en-us/library/bb982126.aspxのweak_ptrの奇妙なコピーコンストラクタ
weak_ptr(const weak_ptr&);
template<class Other>
weak_ptr(const weak_ptr<Other>&);
実際のコード:
weak_ptr(const weak_ptr& _Other)
{ // construct weak_ptr object for resource pointed to by _Other
this->_Resetw(_Other);
}
template<class _Ty2>
weak_ptr(const weak_ptr<_Ty2>& _Other,
typename enable_if<is_convertible<_Ty2 *, _Ty *>::value,
void *>::type * = 0)
{ // construct weak_ptr object for resource pointed to by _Other
this->_Resetw(_Other);
}
Q1:なぜトップコピーコンストラクタでもあるのでしょうか?一番下のケースを含めて、下のケースがすべてのケースを説明するように見えます。それも呼び出されるのですか?もし彼らがそれを含んでいなければ、下の人がそれを取るでしょうか?
質問2:ボトム(テンプレート)コンストラクタの2番目の引数はどうなっていますか?私はSFINAEの側面を理解していると思うが、余分なものがある理由を理解していない::type
@Hans、なぜインデントを修正しませんか? – Motti