Der Standard erlaubt es nicht, Code wie folgt:Gibt es einen bestimmten Grund, warum verschachtelte Namespace-Deklarationen in C++ nicht zulässig sind?
namespace Hello::World {
//Things that are in namespace Hello::World
}
und erfordert stattdessen
namespace Hello { namespace World {
//Things that are in namespace Hello::World
}}
Was die Begründung ist? Wurde zu dem Zeitpunkt einfach nicht daran gedacht, oder gibt es einen bestimmten Grund, warum es nicht enthalten ist?
Es scheint, dass die erste Syntax direkter ausdrückt, in welchem Namespace einer sein soll, da die Deklaration die tatsächliche Verwendung des Namespace im späteren Code nachahmt. Es führt auch zu weniger Einrückung, wenn Sie unglücklicherweise ein "dummes" Klammerzählungs-Einrückwerkzeug verwenden.
Mein einziger Gedanke auf diese Verwendung ist diese Art von ähnelt Erklärungen der Dinge innerhalb einer Klasse. Ich frage mich, ob es einige seltsame Ecken geben würde, einen Klassen-Namespace gegen einen Namespace-Namespace zu spezifizieren, der durch Ihre vorgeschlagene Syntax gebrochen würde. – Omnifarious
möglich Duplikat von [Mehrere Namespace-Deklaration in C++] (http://stackoverflow.com/questions/3589204/multiple-namespace-declaration-in-c) – AnT
@AndreyT: Ich frage nicht, ob es legal ist oder nicht, ich weiß, dass es illegal ist. Ich frage ** warum ** es ist illegal. –