私は最近、コピーアンドスワップイディオムとは何ですか?に関する StackOverflow の回答を読みました。そして、コピーアンドスワップのイディオムができることを知っていました
コードの重複を回避し、強力な例外保証を提供します。
しかし、SGI STLのdeque
実装を調べてみると、イディオムを使用していないことがわかりました。イディオムがどういうわけか「ベストプラクティス」のようなものなら、なぜだろうと思いますか?
deque& operator= (const deque& __x) {
const size_type __len = size();
if (&__x != this) {
if (__len >= __x.size())
erase(copy(__x.begin(), __x.end(), _M_start), _M_finish);
else {
const_iterator __mid = __x.begin() + difference_type(__len);
copy(__x.begin(), __mid, _M_start);
insert(_M_finish, __mid, __x.end());
}
}
return *this;
}