Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::shared_ptr::swap(3)      C++ Standard Libary     std::shared_ptr::swap(3)

NAME
       std::shared_ptr::swap - std::shared_ptr::swap

Synopsis
	  void swap( shared_ptr& r ) noexcept;	(since C++11)

	  Exchanges  the stored	pointer	values and the ownerships of *this and
       r. Reference
	  counts, if any, are not adjusted.

Parameters
	  r - smart pointer to exchange	the contents with

Return value
	  (none)

Example
       // Run this code

	#include <iostream>
	#include <memory>
	#include <string>

	struct Foo {
	    Foo(int _val) : val(_val) {	std::cout << "Foo...\n"; }
	    ~Foo() { std::cout << "~Foo...\n"; }
	    std::string	print()	{ return std::to_string(val); }
	    int	val;
	};

	int main()
	{
	    std::shared_ptr<Foo> p1 = std::make_shared<Foo>(100);
	    std::shared_ptr<Foo> p2 = std::make_shared<Foo>(200);
	    auto print = [&]() {
		std::cout << " p1=" << (p1 ? p1->print() : "nullptr");
		std::cout << " p2=" << (p2 ? p2->print() : "nullptr") << '\n';
	    };
	    print();

	    p1.swap(p2);
	    print();

	    p1.reset();
	    print();

	    p1.swap(p2);
	    print();
	}

Output:
	Foo...
	Foo...
	 p1=100	p2=200
	 p1=200	p2=100
	~Foo...
	 p1=nullptr p2=100
	 p1=100	p2=nullptr
	~Foo...

http://cppreference.com		  2022.07.31	      std::shared_ptr::swap(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::shared_ptr::swap&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help