void reset() noexcept; // (1)
template <class Y>
void reset(Y* p); // (2)
template <class Y, class Deleter>
void reset(Y* p, Deleter d); // (3)
template <class Y, class Deleter, class Allocator>
void reset(Y* p, Deleter d, Allocator a); // (4)
概要
リソースの所有権を放棄し、新たなリソースの所有権を設定する。
効果
- (1) :
shared_ptr().swap(*this)
- (2) :
shared_ptr(p).swap(*this)
- (3) :
shared_ptr(p, d).swap(*this)
- (4) :
shared_ptr(p, d, a).swap(*this)
戻り値
なし
例
#include <memory>
int main()
{
std::shared_ptr<int> p1(new int(3));
std::shared_ptr<int> q1 = p1;
// (1)
// p1が共有している所有権を放棄する。
// q1がまだ所有権を持っているので、リソースは解放されない。
p1.reset();
std::shared_ptr<int> p2(new int(3));
std::shared_ptr<int> q2 = p2;
// (2)
// p2が現在共有している所有権を放棄し、新たなリソースの所有権を設定する。
// p2とq2がそれぞれ、異なるリソースを所有することになる。
p2.reset(new int(2));
}
出力
バージョン
言語
- C++11
処理系
- GCC: 4.3.6 ✅
- Clang: 3.0 ✅
- ICC: ?
- Visual C++: 2008 (TR1) ✅, 2010 ✅, 2012 ✅, 2013 ✅