当使用BOOST_SERIALIZATION_NVP
宏为XML序列化创建名称 - 值对时,编译器很乐意允许编译以下代码,即使元素名称不是有效的XML元素,并且在尝试将对象实际序列化为XML时会抛出异常:
BOOST_SERIALIZATION_NVP(_member[index])
一个明显的解决方法是使用:
boost::serialization::make_nvp("ValidMemberName", _member[index])
但任何人都可以建议一种修改boost的方法,以便非法元素名称会触发编译错误吗?(因此不依赖于单元测试来捕获上述微妙的bug)
编辑:
一种想法是以某种方式声明一个虚拟局部变量,其中传递给宏的元素的名称,假设C++中的有效标识符集是有效XML元素的子集.不完全确定这可以做到.