Объявите другой класс в вашем классе, использующем XML. В его деструкторе очистите ваши статические элементы. Теперь передайте внешнему классу другой статический член типа внутреннего класса. Благодаря наличию нетривиального деструктора, он будет очищен при выходе из программы, и, таким образом, будут очищены и другие ваши значения.
class UseLibXml {
static int xmlvar;
struct StaticCleanup {
~StaticCleanup() {
CleanUpLibXmlVar(UseLibXml::xmlvar);
}
};
static StaticCleanup static_cleanup;
};
Определите UseLibXml::static_cleanup
там же, где вы определяете другие статические переменные, в одном из ваших файлов .cpp.