Was genau sagt eine Definitionsregel in C++? Das einzige vertrauenswürdige Vorkommen, das ich finden kann, ist in Die C++ Programmiersprache, 3.. ed., S. 9.2.3. Gibt es eine offizielle Definition der Regel, außer dass?Was genau ist eine Definitionsregel in C++?
Antwort
Die Wahrheit ist in der Norm (3.2 Eine Definition-Regel):
Keine Übersetzungseinheit mehr als eine Definition einer Variablen enthalten soll, Funktion, Klassentyp, Aufzählungstyp oder Vorlage.
[...]
Jedes Programm wird genau eine Definition jeder Nicht-Inline- Funktion enthalten oder Objekt, das in verwendet wird, die programmieren; keine Diagnose erforderlich. Die Definition kann im Programm explizit erscheinen, sie kann im Standard oder einer benutzerdefinierten Bibliothek gefunden werden, oder (falls zutreffend) ist implizit definiert (siehe 12.1, 12.4 und 12.8). Eine Inline-Funktion soll in für jede Übersetzungseinheit definiert werden, in der verwendet wird.
Uh, es als ein wenig mehr ist. Es betrifft auch mehrere Übersetzungseinheiten. Und Ausnahmen von der Regel (das macht es ein bisschen schwierig darüber zu reden!). Prost, –
In der Tat, ich würde die ganze Seite zitieren müssen, also ging ich für das Wesentliche. – icecrime
Stark im Zusammenhang: [Hat eine Funktion aus der Standardbibliothek neu zu definieren verletzt die Ein-Definition-Regel?] (Http://stackoverflow.com/q/41670800/514235) – iammilind