Il seguente codice compila bene sul mio sistema:Iteratori per gli array di dimensioni diverse
#include <array>
#include <type_traits>
static_assert(std::is_same<std::array<int, 5>::iterator,
std::array<int, 7>::iterator>::value, ":(");
è che il comportamento garantito dalla norma? Il tipo iteratore è indipendente dalla dimensione dell'array?
Se è garantito, esiste un modo per astrarre dal tipo di elemento e ignorare la dimensione?
template<typename T, size_t n>
void foobar(std::array<T, n>::iterator it)
Cioè, esiste un modo per scrivere il codice specifico matrice sopra senza menzionare la dimensione n
?
Si noti che non voglio ricorrere a T*
, anche se in modalità di rilascio l'iteratore probabilmente è un T*
.
Cosa c'è di sbagliato con 'template void foobar (Itearator_type it)'? –
Lol4t0
@ Lol4t0 È troppo generico e non soddisfa la mia sete di conoscenza? – fredoverflow
Voglio dire, se il codice funziona per _given_ iterator, perché si dovrebbe imporre una limitazione artificiale? Questo 2 commenti collegati solo l'ultima sezione della tua domanda, di causa. – Lol4t0