Espacios de nombres
Variantes
Acciones

Guías de deducción para std::deque

De cppreference.com
< cpp‎ | container‎ | deque
 
 
 
 
Definido en el archivo de encabezado <deque>
template< class InputIt,

          class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>>
deque(InputIt, InputIt, Alloc = Alloc())

  -> deque<typename std::iterator_traits<InputIt>::value_type, Alloc>;
(desde C++17)

Esta guía de deducción se proporciona para deque para permitir la deducción desde un rango de iteradores. Esta sobrecarga solo participa en la resolución de sobrecargas si InputIt satisface a InputIterator, y Alloc satisface a Allocator.

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 <deque>
#include <vector>
int main() {
   std::vector<int> v = {1, 2, 3, 4};
 
   // usa una guía de deducción explícita para deducir std::deque<int>
   std::deque x(v.begin(), v.end()); 
 
   // deduce std::deque<std::vector<int>::iterator>
   // la primera fase de la resolución de sobrecarga para la inicialización de lista
   // selecciona el candidato sintetizado del constructor de lista de inicializadores;
   // la segunda fase no se realiza y la guía de deducción no surte efecto
   std::deque y{v.begin(), v.end()}; 
}