Was genau sagt eine Definitionsregel in C++ aus? Das einzige vertrauenswürdige Vorkommen, das ich finden kann, ist in Die Programmiersprache C++, 3. Aufl., S. 9.2.3. Gibt es eine offizielle Definition der Regel außer dieser?
Was genau ist eine Definitionsregel in C++?
Eiskriminalität
Die Wahrheit liegt im Standard (3.2 Eine Definitionsregel) :
Keine Übersetzungseinheit darf mehr als eine Definition einer Variablen, Funktion, eines Klassentyps, eines Aufzählungstyps oder einer Vorlage enthalten.
[…]
Jedes Programm muss genau eine Definition jeder Nicht-Inline-Funktion oder jedes Objekts enthalten die in diesem Programm verwendet wird; keine Diagnose erforderlich. Die Definition kann explizit im Programm erscheinen, sie kann in der Standard- oder einer benutzerdefinierten Bibliothek gefunden werden, oder sie ist (falls zutreffend) implizit definiert (siehe 12.1, 12.4 und 12.8). Eine Inline-Funktion muss in jeder Übersetzungseinheit definiert werden, in der sie verwendet wird.
-
Äh, es ist ein bisschen mehr als das. Es betrifft auch mehrere Übersetzungseinheiten. Und Ausnahmen von der Regel (das macht es ein bisschen schwierig, darüber zu sprechen!). Prost,
– Prost und hth. – Alf
16. November 2010 um 8:13 Uhr
-
In der Tat müsste ich die ganze Seite zitieren, also habe ich mich für das Wesentliche entschieden.
– Eiskriminalität
16. November 2010 um 8:14 Uhr
Stark verwandt: Verletzt die Neudefinition einer Funktion aus der Standardbibliothek die One-Definition-Rule?
– iammilind
16. Januar 2017 um 8:51 Uhr