- 141 名前:デフォルトの名無しさん mailto:sage [2021/04/09(金) 11:44:34.26 ID:B1MFSAev.net]
- C++11でのstd::swapは、次のようなコードになっているそうですが、
仮に、もし(1)が終わった直後にt1の中のポインタ型やshared_ptr<A>のメンバに nullptr的なものが代入されるんでしょうか。 仮にt1のポインタ的なメンバにnullptr的なものが代入されない場合、 (2)でt1への代入に置いて何が起きるのか心配です。 質問の仕方を変えるならば、 share_ptrは参照カウンタ方式ですのでカウンタのアップ/ダウンは正確でなければ なりませんが、以下の例では、いったいどの行のどの演算子(またはどの部分)で カウントアップ/カウントダウンされるんでしょうか。 template<typename T> void swap(T& t1, T& t2) { T temp = std::move(t1); // (1), or T temp(std::move(t1)); t1 = std::move(t2); // (2) t2 = std::move(temp); // (3) }
|

|