deduction guides for std::vector
Elemento definito nell'header <vector>
|
||
template< class InputIt, class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>> |
||
Questa deduction guide è fornita a vector per permettere la deduzione da un range di iteratori. Questi overload partecipano nella overload resolution solo se InputIt
soddisfa LegacyInputIterator e Alloc
soddisfa Allocator.
This section is incomplete |
Nota: il limite per cui la libreria determina che un tipo non soddisfa LegacyInputIterator non è specificato, tranne che come minimo i tipi integrali non sono qualificati come input iterators. Similmente, il limite per cui è determinato che un tipo non soddisfi Allocator non è specificato, tranne che come minimo deve esistere un tipo membro Alloc::value_type
e l'espressione std::declval<Alloc&>().allocate(std::size_t{}) deve essere ben formata quando trattata come operando non evalutato.
[modifica] Esempio
#include <vector> int main() { std::vector<int> v = {1, 2, 3, 4}; // usa la deduction guide esplicita per dedurre std::vector<int> std::vector x(v.begin(), v.end()); // deduce std::vector<std::vector<int>::iterator> // la prima fase della risoluzione degli overload per la list-initialization seleziona // il candidato dal costruttore della initializer-list; la seconda fase non è attuata e // la deduction guide non ha effetto std::vector y{v.begin(), v.end()}; }