C++相談室 part155
..
141:デフォルトの名無しさん
21/04/09 11:44:34.26 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)
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
286日前に更新/299 KB
担当:undef