Sometimes, you need to develop you own dynamic data types, whether a smart pointer, or a STL container like type, that requires a pointer as part of its implementation. You will need to provide your own hand crafted serialisation routines for these, and use the omit pragma to prevent classdesc from emitting an automatic definition (or simply arrange things so that classdesc is not run on the definition file). You are advised to keep the pointer encapsulation suitably minimalist, so as to minimise the amount of manual code of serialisation routines.