Wenn Sie das Makro BOOST_SERIALIZATION_NVP
verwenden, um ein Name-Wert-Paar für die XML-Serialisierung zu erstellen, ermöglicht der Compiler die Kompilierung des folgenden Codes, obwohl der Elementname kein gültiges XML ist Element und ein Ausnahme ausgelöst wird, wenn tatsächlich versuchen, um das Objekt in XML zu serialisiert:Boost-Serialisierung NVP-Makro- und Nicht-XML-Element Zeichen
BOOST_SERIALIZATION_NVP(_member[index])
eine offensichtliche Lösung ist, zu verwenden:
boost::serialization::make_nvp("ValidMemberName", _member[index])
Aber kann jemand empfehlen, einen Weg Schub zu modifizieren, so dass illegitimes Element Namen würden eine Kompilation auslösen n Fehler? (Also nicht auf Unit-Tests verlassen, um die oben subtilen Fehler zu fangen)
Edit:
Eine Idee ist irgendwie eine Dummy-lokale Variable mit dem Namen des an das Makro übergeben Element zu deklarieren, Angenommen, der Satz gültiger Bezeichner in C++ ist eine Teilmenge gültiger XML-Elemente. Nicht ganz sicher, aber das kann getan werden.
Dies erzeugt einen Laufzeitfehler 'what(): Ungültiger XML-Tag-Name' – alfC