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

FreeBSD Manual Pages

  
 
  

home | help
std::unique...get_deleter(3)  C++ Standard Libary std::unique...get_deleter(3)

NAME
       std::unique_ptr::get_deleter - std::unique_ptr::get_deleter

Synopsis
	  Deleter& get_deleter() noexcept;		(since C++11)
							(constexpr	 since
       C++23)
	  const	Deleter& get_deleter() const noexcept;	(since C++11)
							(constexpr	 since
       C++23)

	  Returns  the	deleter	 object	which would be used for	destruction of
       the managed
	  object.

Parameters
	  (none)

Return value
	  The stored deleter object.

Example
       // Run this code

	#include <iostream>
	#include <memory>

	struct Foo
	{
	    Foo() { std::cout << "Foo()	0x"  <<	 std::hex  <<  (void*)this  <<
       '\n'; }
	    ~Foo()  {  std::cout  << "~Foo() 0x" << std::hex <<	(void*)this <<
       '\n'; }
	};

	struct D
	{
	    int	number;

	    void bar()
	    {
		std::cout << "call D::bar(), my	number is: "  <<  std::dec  <<
       number << '\n';
	    }

	    void operator()(Foo* p) const
	    {
		std::cout  <<  "call deleter for Foo object 0x"	<< std::hex <<
       (void*)p	<< '\n';
		delete p;
	    }
	};

	int main()
	{
	    std::cout << "main start\n";

	    std::unique_ptr<Foo, D> up1(new Foo(), D(42));
	    D& del1 = up1.get_deleter();
	    del1.bar();

	    std::unique_ptr<Foo, D> up2(new Foo(), D(43));
	    D& del2 = up2.get_deleter();
	    auto* released = up2.release();
	    del2(released);

	    std::cout << "main end\n";
	}

Output:
	main start
	Foo() 0x0x90cc30
	call D::bar(), my number is: 42
	Foo() 0x0x90cc50
	call deleter for Foo object 0x0x90cc50
	~Foo() 0x0x90cc50
	main end
	call deleter for Foo object 0x0x90cc30
	~Foo() 0x0x90cc30

See also
	  get_deleter returns the deleter of specified type, if	owned
		      (function	template)

http://cppreference.com		  2024.06.10	  std::unique...get_deleter(3)

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

home | help