Sono curioso di sapere quanto tempo richiede una chiamata a std::get<>
su un std::tuple<>
. Alcuni brevi googling (incluse le pagine di riferimento che di solito contengono queste informazioni) non hanno dato risultati.Efficienza di std :: get con std :: tupla
mia intuizione iniziale (e paura) è che la struttura ricorsiva di tupla (se viene implementato come un modello variadic) porterebbe ad ottenere che richiede un ordine di N lookup (Una chiamata a get<3>(t)
cercando come t.rest().rest().first()
. Sono sperando sono lontano qui ...
Poi di nuovo, mi auguro che il compilatore sarebbe in grado di ottimizzare questo per tornare direttamente l'offset senza il sovraccarico di N di chiamate corretta.
Fondamentalmente quello che voglio : esiste una garanzia specifica sul runtime? Ciò limita il modo in cui viene implementato std::tuple
La sezione pertinente dello standard qui è ** 1.9 Esecuzione del programma [intro.execution] * * "1 Le descrizioni semantiche di questo standard internazionale definiscono una macchina astratta non parametrica parametrizzata: questo standard internazionale non impone alcun requisito sulla struttura delle implementazioni conformi, in particolare non è necessario copiare o emulare la struttura della macchina astratta. sono richiesti per emulare (solo) il comportamento osservabile della macchina astratta come spiegato below.5 " – TemplateRex