Boost vs Qt
I do not want to start a religious war here.
I am new to Qt and have not tried Boost yet.
For those who have used both, I like some comments and insights of pros and cons for
Boost versus Qt.
At first: It's different
I'm using both, but more Qt than boost, I will tell you why:
first of all: both are professional libs
Qt is really comfortable to use
boost documentation is IMO not the best
but boost has some stuff, Qt does not have: smart pointers are better and more
We use boost test for unit testing our software (we used it before QtTest exists :-)
boost functors are pretty good and much better than STL support for it.
I agree with Gerolf, especially when it comes to documentation. The boost documentation is not really straight forward, but it is managable.
It is certainly possible to use Qt and boost in parallel. So, far I have not run into problems.
Qt API wins on consistency and predictability.
Great - now you have started the war ;)
We use boost and Qt together in our Qt based applications - but more Qt than boost. After some years of development with both libraries in my opinion:
boost documentation is (really, really) horrible compared to Qt documentation and a real pain to read - to make it short: the documentation is simply bad
boost documentation is incomplete, not well structured and missing good examples
boost is focused on generic template programming while Qt is more focused on clean object oriented
boost smart pointers are better than Qt smart pointer - and because they are easy to use the bad documentation doesn't matter here
the heavy use of templates in boost increases compile times (even on my core i7)
because of the templates boost compile errors are pure nightmare
boost has a lot of stuff that is missing in Qt (and vice versa)
boost libraries we mainly use here are: shared pointer, property tree (i like it), foreach, filesystem, multi-index, optional, serialization, thread
boost test framework is not bad - we use it for non Qt applications and libraries
Boost has a lot of great stuff. The problem is the really bad documentation. Even if a library is "high professional c++" or very "excellent designed" - without a good documentation it is useless or a pain to use. If you ever worked with the Qt documentation, which is IMHO the best documentation of any library I ever used, you will hate the boost documentation.
Another great thing on Qt are the lot of good examples. Sometimes, or often you can learn more from a good example than from a lot of documentation pages. boost is missing these examples and so it is much more difficult to use in my opinion.
As I said, I prefer Qt on all, that Qt has, the rest I take from boost ;-)
On plus for boost is, they try to bring their stuff into C++ standards.
For those who can read German. Here is the German wikipedia entry for boost: http://de.wikipedia.org/wiki/Boost_(C++-Bibliothek)
There is a section there specifying the "requirements for license" in order to be part of boost. The first requirement is that it has to be easy to read and easy to understand. :-)
In reference to the statements given here on boost's documentation, it is obviously refering to the license writing only.
Is someone aware of the time line for becoming part of C++ standard?
Parts of boost will become part of the stl in C++11.
Your link is broken, a ")" at the end is missing ;-)
Just for the records:
The english wikipedia entry: http://en.wikipedia.org/wiki/Boost_C++_Libraries
Thanks to all for fixing and sorry for the broken link.
I had checked the English Wiki description of boost, but it is much shorter and does not have this interesting section. Therefore, the German version was posted.
However, in order to share the section in question here it is translated by Google:
To be part of Boost, a library must have a license, the following conditions are met:
It must be easily readable and understandable.
You must give each for any purpose (commercial and non-commercial) free copy, use and modification rights.
You must demand that the validity of the license is specified in each copy, or modify the software source.
You may not require that the license is specified in or generated executable binaries.
You may not require that the source code is included in or generated executable binaries.
You may restrict the use of names and description of the library to the standard version on the Boost website."
boost c++ represents a step to the c++ next technical release, for components libraries. boost c++ is a library of libraries. qt is a framework that works on c++, and not with c++. you cannot compare apples and balls, in spite of appearances! :-)
That's why I said, both are good. You can combine them. Some parts exist in both, there I typically use Qt, but many things are only in one of Qt and Boost.