non può cancellare la mia domanda, in modo da sovrascrivere invece ...std :: set <K, C> :: operator <(std :: set const <K, C> &) non utilizza C(), ma std :: meno()
risposta
non è in realtà un bug nel implementaton, anche se è probabilmente uno nella norma:
23.2.1 generali requisiti relativi al serbatoio [container.requirements.general] 13 Tabella 98 elenca le operazioni che vengono forniti per alcuni tipi di contenitori ma non altri. I contenitori per i quali sono fornite le operazioni elencate devono implementare la semantica descritta nella Tabella 98, se non diversamente indicato.
La tabella contiene:
a < b
trasformabilebool
lexicographical_compare(a.begin(),a.end(),b.begin(),b.end())
pre: < è definito per valori di T. < è un rapporto totale di ordinazione.
lineare
Mentre sezioni successive specificano che std::set
fornisce confronto-operatori, purtroppo non cambia la definizione da quello di cui sopra.
A parte, std::lexicographical_compare
non utilizza attualmente std::less
, ma utilizza direttamente <
. Non che ciò sia in alcun modo significativo.
- 1. Clang, std :: shared_ptr e std :: meno/operatore <
- 2. qual è lo scopo di std :: set <VALUE, std :: owner_less <VALUE>>?
- 3. C++ std :: stringstream operatore << sovraccarico
- 4. Converti Set <Map.Entry <K, V>> a HashMap <K, V>
- 5. Perché non esiste un operatore << per std :: unique_ptr?
- 6. 'std :: :: ios_base ios_base (const std :: ios_base &)' è errore privata', mentre il sovraccarico operatore << per std :: ostram
- 7. std :: set iterator automaticamente const
- 8. C++ concatenamento dell'operatore << per std :: cout come l'utilizzo
- 9. std :: vector <std::string> crash
- 10. Utilizzo di std :: map <K,V> dove V non ha un costruttore predefinito utilizzabile
- 11. Perché std :: cout << principale << std :: endl stampa 1?
- 12. std :: back_inserter per std :: set?
- 13. effettiva costruzione std :: string da std :: unordered_set <char>
- 14. C++ std :: set Trova funzione overloading == operatore
- 15. Qual è la differenza tra std :: multimap <key, value> e std :: map <chiave, std :: set <value>>
- 16. Ordinamento di std :: vector <std :: pair <std :: string, bool >> per la stringa?
- 17. Vettore di std :: funzione <>
- 18. std :: cin.ignore (std :: numeric_limits <std :: streamsize> :: max(), '\ n') errore quando si utilizza #include <Windows.h>
- 19. Assegnazione di std :: function <int(int)> a std :: function <const int & (const int & x)>
- 20. Perché std :: remove non funziona con std :: set?
- 21. Errore con `std :: vector <std :: unique_ptr < T >>`
- 22. std :: set non ha un membro emplace
- 23. Come convertire std :: vector <std :: reference_wrapper <T>> a std :: vector <T>
- 24. Inizializzazione std :: shared_ptr <std::map<>> utilizzando rinforzato-init
- 25. Confronto std :: function <>
- 26. Copia veloce di `std :: vector <std :: uint8_t>`
- 27. Conversione da std :: string a std :: vector <char>
- 28. Differenza tra std :: set e std :: priority_queue
- 29. std :: array <char, N> a std :: stringa
- 30. emplace_back non funziona con std :: vector <std :: map <int, int>>
È qualcosa che stai vedendo empiricamente, o è questo nelle specifiche? – templatetypedef
Questo sembra strano –
@templatetypedef è descritto qui, http://en.cppreference.com/w/cpp/container/set/operator_cmp –