Ho sentito tutto questo nuovo (su /.) Su C++ 0x che non ha più concetti, ma non ho idea di cosa siano? Qualcuno può spiegarmi?Cosa sono i concetti?
risposta
Concetti sono una caratteristica di programmazione generico che permettere a qualcuno di scrivere codice basato su modelli per specificare requisiti che i parametri di tipo devono soddisfare.
Ad esempio, alcuni tipi di raccolta richiedono che il parametro di tipo per la raccolta definisca l'operatore <. Quindi il programmatore potrebbe definire un concetto chiamato LessThanComparable che dice al compilatore che il parametro type della classe di modello deve avere l'operatore < definito. Se l'utente del modello tenta quindi di creare un'istanza del modello utilizzando un tipo che non ha il concetto LessThanComparable (ovvero non ha una funzione operatore <), il compilatore può emettere un semplice messaggio di errore anziché il torrent dei messaggi di errore associati al codice basato su modelli. Il compilatore può anche essere in grado di sfruttare le informazioni aggiuntive fornite dai concetti per generare codice più efficiente.
Questo è un po 'troppo complicato, ma penso che ti dia l'idea generale dietro i concetti.
Se si desidera provare alcune delle funzionalità dei concetti, dare un'occhiata alla libreria di controllo Boost.Concept. Non penso che fornisca l'intera gamma di funzionalità che sarebbero state incluse nello standard, ma è un buon punto di partenza.
Si potrebbe anche voler guardare ConceptC++, c'è una buona definizione di concetti lì.
Ecco un articolo che penso avrebbe aiutato:
http://www.devx.com/SpecialReports/Article/38864
La decisione di rimuovere più volte loro è stato discusso qui a SO pure. Queste potrebbero rivelarsi interessante:
- 1. MVC: i modelli e gli oggetti entità sono concetti separati?
- 2. Cosa sono i modelli vincolati?
- 3. Quali sono i concetti git di HEAD, master, origine?
- 4. Quali sono i concetti chiave nella programmazione funzionale?
- 5. Cosa sono i thread (cos'è un thread)?
- 6. Cosa sono i guids?
- 7. Cosa sono i file FTL
- 8. Cosa sono i moduli CSS3?
- 9. Cosa sono i file .axf?
- 10. Cosa sono i fori GC?
- 11. La composizione pura interrompe i concetti OOP?
- 12. void_t "può implementare concetti"?
- 13. Quali concetti statistici sono utili per la profilazione?
- 14. ENTRA/Dove CONCETTI
- 15. Concetti IDE sperimentali
- 16. Cosa sono i generici in C#?
- 17. Cosa sono i file SWZ in Flash?
- 18. Cosa sono i tick usati in PHP?
- 19. Che cosa sono i "dati urgenti"?
- 20. Cosa sono esattamente i "servizi WPF"?
- 21. CSS - I margini sono una brutta cosa?
- 22. Che cosa sono i metadati in .NET?
- 23. Cosa sono i letterali in Python?
- 24. Cosa sono i bit inferiori e superiori?
- 25. Cosa sono i campi sintetici in Java?
- 26. Cosa sono i binari incorporati in Xcode?
- 27. Cosa sono i kexalgorithms predefiniti di openssh?
- 28. Che cosa sono i file .tpl.html? (angularjs)
- 29. Cosa sono i file .a in Go?
- 30. Che cosa sono i 'dati' in window.history.replaceState
Eh, questo è quasi esattamente quello che diceva il link di EBGreen! Strana coincidenza, eh? – jkeys
Non proprio. Ho letto quell'articolo quando è stato pubblicato per la prima volta quasi un anno fa. Ho la capacità di conservare le informazioni :-) – Ferruccio
ottima risposta. questa era una delle domande su C++ che avevo avuto paura di chiedere – chester89