deduction guides for std::vector
Da cppreference.com.
| Elemento definito nell'header <vector>
|
||
template< class InputIt, class Alloc = std::allocator<typename std::iterator_traits<InputIt>::value_type>> vector(InputIt, InputIt, Alloc = Alloc()) -> vector<typename std::iterator_traits<InputIt>::value_type, Alloc>; |
||
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.
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()};
}