Come la domanda dice, mi sto chiedendo il motivo per questo. Perché ottengo un errore quando tento di ottenere la distanza tra gli iteratori const
e non const
.Perché std :: distance non funziona sul mix di iteratori const e nonconst?
vector<int> v;
auto it=v.begin();
auto cit=v.cbegin();
distance(it,cit);
no matching function for call to ‘distance(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >&)
Dalla mia comprensione limitata degli iteratori, non vedo alcuna ragione per cui non dovrebbe funzionare.
hmm perché non creano semplicemente un modello con 2 parametri di modello? È possibile farlo in cpp core lang? Che cosa sto chiedendo è una decisione di progettazione o una limitazione lang? – NoSenseEtAl
per essere chiari, so che possono creare template con 2 parametri di template, ma mi sto chiedendo sarebbe in conflitto con la versione 1 param template – NoSenseEtAl
@NoSenseEtAl, direi la decisione di progettazione. In questo modo è più semplice e calcolare la distanza tra iteratori di tipi diversi (ad esempio un iteratore di accesso casuale e un iteratore diretto) non è probabilmente qualcosa che si desidera fare molto spesso. Potresti davvero scrivere una versione con due argomenti modello, ma quale sarebbe il problema del mondo reale? –