Guías de deducción para std::vector
Definido en el archivo de encabezado <vector> | ||
template<class InputIt, class Alloc =std::allocator<typenamestd::iterator_traits<InputIt>::value_type>> | (desde C++17) | |
Esta guía de deducción se proporciona para vector 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 <vector> int main(){std::vector<int> v ={1, 2, 3, 4}; // usa una guía de deducción explícita para deducir std::vector<int>std::vector x(v.begin(), v.end()); // deduce std::vector<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 efectostd::vector y{v.begin(), v.end()};}