deduction guides for std::stack
Definido en el archivo de encabezado <stack> | ||
template<class Container> stack(Container) | (1) | (desde C++17) |
template<class InputIt> stack(InputIt, InputIt) | (2) | (desde C++23) |
template<class Container, class Alloc> stack(Container, Alloc) | (3) | (desde C++17) |
template<class InputIt, class Alloc> stack(InputIt, 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.
Estas sobrecargas solo participan en la resolución de sobrecargas si
InputIt
(si existe) satisface InputIterator,Container
(si existe) no satisface Allocator,- Para (3)(hasta C++23)(4)(desde C++23),
Alloc
satisface Allocator, y - std::uses_allocator_v<Container, Alloc> es true si tanto
Container
comoAlloc
existen.
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>>}