Espacios de nombres
Variantes
Acciones

deduction guides for std::stack

De cppreference.com
< cpp‎ | container‎ | stack
 
 
 
 
Definido en el archivo de encabezado <stack>
template<class Container>

stack(Container)

  -> stack<typename Container::value_type, Container>;
(1) (desde C++17)
template<class InputIt>

stack(InputIt, InputIt)

  -> stack</*valor-de-iter-t*/<InputIt>>;
(2) (desde C++23)
template<class Container, class Alloc>

stack(Container, Alloc)

  -> stack<typename Container::value_type, Container>;
(3) (desde C++17)
template<class InputIt, class Alloc>

stack(InputIt, InputIt, Alloc)
  -> stack</*valor-de-iter-t*/<InputIt>,

    std::deque</*valor-de-iter-t*/<InputIt>, Alloc>>;
(4) (desde C++23)

Estas guías de deducción se proporcionan por stack para permitir la deducción a partir del tipo de contenedor subyacente.

1) Deduce el tipo de contenedor subyacente a partir del argumento.
2) Deduce el tipo de elemento a partir del iterador, usando std::deque</*valor-de-iter-t*/<InputIt>> como el tipo de contenedor subyacente, donde /*valor-de-iter-t*/<InputIt> denota typenamestd::iterator_traits<InputIt>::value_type.
3-4) Igual que (1-2), excepto que se proporciona un asignador de memoria.

Estas sobrecargas solo participan en la resolución de sobrecargas si

Nota: no se especifica hasta qué grado la biblioteca determina que un tipo no satisface a IteradorDeEntradaLegado, excepto que, como mínimo, los tipos enteros no califican como iteradores de entrada. Del mismo modo, no se especifica en qué medida se determina que un tipo no satisface a Allocator, excepto que, como mínimo, el tipo miembro Alloc::value_type debe existir y la expresión std::declval<Alloc &>().allocate(std::size_t{}) debe estar bien formada cuando se trate como un operando no evaluado.

[editar]Ejemplo

#include <vector>#include <stack>int main(){std::vector<int> v ={1, 2, 3, 4};std::stack s{v};// guía #1 deduce std::stack<int, vector<int>>}


close