You have simply forgotten to specify the ArgTraits of your new type. If you add the following to your example everything should work as expected. This is not really documented yet, except in the API, but it is a standard design pattern. You can look at test15 to see an example. If you look in e.g. libstdc++ it uses the same model to determine the properties of iterators.
namespace TCLAP {...
Actually this should have been fixed some time ago. Have you tried to reproduce this with the active source code from CVS? If you are able to reproduce with the latest source can you please let us know what compiler version you are using. There are some (safe) warnings if you really push the compiler warning level but with Wextra it should pass w.o any warnings.