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

FreeBSD Manual Pages

  
 
  

home | help
std::stack::emplace(3)	      C++ Standard Libary	std::stack::emplace(3)

NAME
       std::stack::emplace - std::stack::emplace

Synopsis
	  template< class... Args >		     (since C++11)
	  void emplace(	Args&&... args );	     (until C++17)
	  template< class... Args >		     (since C++17)
	  decltype(auto) emplace( Args&&... args );

	  Pushes a new element on top of the stack. The	element	is constructed
       in-place, i.e.
	  no copy or move operations are performed. The	constructor of the el-
       ement is	called
	  with exactly the same	arguments as supplied to the function.

	  Effectively calls c.emplace_back(std::forward<Args>(args)...);

Parameters
	  args - arguments to forward to the constructor of the	element

Return value
	  (none)
       (until C++17)
	  The  value  or  reference,  if  any,	returned  by the above call to
       (since C++17)
	  Container::emplace_back.

Complexity
	  Identical to the complexity of Container::emplace_back.

Example
       // Run this code

	#include <iostream>
	#include <stack>

	struct S
	{
	    int	id;

	    S(int i, double d, std::string s) :	id{i}
	    {
		std::cout << "S::S(" <<	i << ",	" << d	<<  ",	\""  <<	 s  <<
       "\");\n";
	    }
	};

	int main()
	{
	    std::stack<S> adaptor;

	    const S& s = adaptor.emplace(42, 3.14, "C++"); // for return value
       C++17 required

	    std::cout << "id = " << s.id << '\n';
	}

Output:
	S::S(42, 3.14, "C++")
	id = 42

	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	       Applied	   to		   Behavior    as    published
       Correct behavior
	  LWG 2783 C++17      emplace returned	reference,  breaking	   re-
       turns decltype(auto)
			      compatibility with pre-C++17 containers

See also
	  push inserts element at the top
	       (public member function)
	  pop  removes the top element
	       (public member function)

http://cppreference.com		  2022.07.31		std::stack::emplace(3)

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

home | help