Quando si utilizza la macro BOOST_SERIALIZATION_NVP
per creare una coppia nome-valore per la serializzazione XML, il compilatore felicemente consente la compilazione del seguente codice, anche se il nome dell'elemento non è un XML valido elemento e un eccezioni viene generata quando cercando di serializzare in realtà l'oggetto in XML:boost serialization Caratteri NVP macro e caratteri non XML
BOOST_SERIALIZATION_NVP(_member[index])
una correzione evidente è quello di utilizzare:
boost::serialization::make_nvp("ValidMemberName", _member[index])
Ma qualcuno può suggerire un modo per modificare spinta in modo che elemento illegittimo i nomi attiverebbero una compilazione n errore? (Quindi non basandosi su test di unità per prendere il sopra sottili bug)
Edit:
Un'idea è quella di dichiarare in qualche modo una variabile locale fittizio con il nome dell'elemento passato alla macro, supponendo che l'insieme di identificatori validi in C++ sia un sottoinsieme di elementi XML validi. Non è sicuro che tutto ciò possa essere fatto.
Questo genererà un errore di runtime 'what(): Nome tag XML non valido ' – alfC