2009-08-10 16 views
22

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

25

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ì.

+0

Eh, questo è quasi esattamente quello che diceva il link di EBGreen! Strana coincidenza, eh? – jkeys

+2

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

+0

ottima risposta. questa era una delle domande su C++ che avevo avuto paura di chiedere – chester89