Despite my previous post, I decided to give a try to Boost and switched VCS Made Easy to use some of its libraries; the modified source code is not yet on the public server (hmm, the joys of Monotone), but I think it'll be soon.

I must say that the results are very satisfactory. At first, I dropped my custom file and directory classes in favor of Boost.Filesystem. During the conversion, I had to rework some of the existing code to comply with Boost's guidelines WRT global (environment) variables and portability. The code is now much cleaner, easier to read and probably less error prone (I still have to add unit tests).

Then I substituted several usages of std::ostringstream with printf-like formatters from Boost.Format. Using these, it's very easy to construct text messages, which also results in easier to read code. I think I'll convert many other strings to use this.

Another thing I've used is the boost::noncopyable class (from Boost.Utility) to easily mark several classes as non-copyable. This restriction was not in the code before, but it has to be because these classes are not safe to copy operations (pointers get duplicated, for example).

There are many other goodies I've discovered and which are worth using, but haven't got the time to implement them yet. Some examples include the smart pointers, the checked deletes or the whole testing framework (from Boost.Test).

I must also say that the documentation is excellent and everything is very well thought due to the peer-review. All libraries come with an explanation of their methods, the design choices made during their development, explanations about the rationale behind things that may look strange at first look, portability suggestions, FAQs...

Let's see what else I discover... but I think the doubts I had yesterday have been simply resolved :-)