fornisce insert_after
e erase_after
membri a cui potrebbe non essere necessario accedere effettivamente all'oggetto std::forward_list
. Pertanto possono essere implementate come funzioni membro static
e essere chiamate senza un oggetto elenco, utile per un oggetto che desidera eliminare se stesso da un elenco, che è un uso molto comune. EDIT: questa ottimizzazione si applica solo alle specializzazioni forward_list
su std::allocator
o agli allocatori stateless definiti dall'utente.I membri std :: forward_list possono essere implementati come statici?
È possibile eseguire un'implementazione conforme standard?
§17.6.5.5/3 dice
A call to a member function signature described in the C++ standard library behaves as if the implementation declares no additional member function signatures.
con una nota in calce
A valid C++ program always calls the expected library member function, or one with equivalent behavior. An implementation may also define additional member functions that would otherwise not be called by a valid C++ program.
Non è chiaro per me se l'aggiunta di static
creerebbe una funzione di membro "diverso", ma la rimozione di un (implicito argomento non dovrebbe rompere nulla che l'aggiunta di argomenti predefiniti non sarebbe, e che è legale. (Non è possibile legalmente portare un PTMF a qualsiasi funzione membro standard.)
Mi sembra che la libreria debba essere autorizzata a farlo, ma non sono sicuro che alcune regole potrebbero essere violate. E quanto sono normativi i prototipi della funzione membro elencati?
Le operazioni di lista di muting richiedono l'accesso all'allocatore della lista, quindi dubito che potrebbero essere statiche (specialmente con i nuovi allocatori di stato). –
Ancora, il modello può essere specializzato per il caso estremamente comune di 'std :: allocator' e anche dall'utente per se stesso, se lo desidera. – Potatoswatter
Come ti specializzeresti in base alla conoscenza del * iteratore * da solo? L'iteratore non sa a quale elenco appartiene, né quale allocatore viene utilizzato da quell'elenco. –