Mir fehlt ein Hintergrund in der theoretischen Informatik, aber ich hätte gerne verstanden, welchen theoretischen Objekten C ++ - Konzepte entsprechen. Grundsätzlich ermöglichen C ++ - Konzepte das Definieren einer Reihe von Typen, die eine Liste von Einschränkungen erfüllen. Also, aus theoretischer Sicht, welchen C ++ - Konzepten entsprechen oder entsprechen sie grob (und in diesem Fall, was sind die Unterschiede)?
8
Antworten:
Aus Sicht der Programmiersprachtheorie entsprechen C ++ - Vorlagen in Kombination mit Konzepten im Gegensatz zur Perspektive der Berechenbarkeit, die andere Antworten und Kommentare angeboten haben, einem begrenzten Polymorphismus oder einer eingeschränkten Generizität . Konzepte selbst entsprechen den Einschränkungen oder Grenzen eines Typs.
Eine Vorlage ist eine Funktion auf Typebene, die nach Typ parametrisiert ist und durch ein Konzept zur Implementierung einer bestimmten Schnittstelle eingeschränkt wird. Wenn die Vorlage auf einen Typ angewendet wird, der diesem Konzept entspricht, wird ein neuer Typ erstellt.
Vorlagen + Konzepte sind analog zu Generika in Java, Scala oder Eiffel. Sie unterscheiden sich von Vorlagen in früheren C ++, weil sie das Angeben und Überprüfen von Einschränkungen für die Typparameter ermöglichen, während C ++ - Vorlagen dies nicht zuließen. Der Vorteil ist eine bessere statische Überprüfung, ob das Programm nach dem Anwenden der Vorlage gut typisiert ist.
Eine gute Referenz ist Pierce, Benjamin C. (2002). Typen und Programmiersprachen . MIT Press, Kapitel 26: Begrenzte Quantifizierung.
quelle
C ++ - Konzepte werden rekursiv aufzählbaren Sprachen zugeordnet. Da das C ++ - Typsystem Turing vollständig ist, kann jede Eigenschaft von Typen, die während der Vorlageninstanziierung abgefragt werden kann (Größe, Parameter usw.), über ein beliebiges Programm ausgeführt werden, das im Typsystem simuliert wird.
quelle