El 07/01/2015 a las 10:49, Antony Polukhin escribió:
Hi all,
I've been looking through the latest changes to drop dependencies. Stuff that I saw is very frightening.
For example: https://github.com/boostorg/move/blob/develop/include/boost/move/detail/type... . Every boost release some issues are fixed in intrinsics of TypeTraits and is_move_* is_nothrow_* traits. Copy-pasting code from TypeTraits feels like loading a gun and pointing it on own foot.
I really don't agree. I've measured the code bloat that TypeTraits and
other "low-level" libraries were bringing to some libraries and it was
very noticeable. I would like to depend only on TypeTraits but that's
impossible, it brings MPL, Preprocessor, etc. Including
boost/container/vector.hpp was bringing MB of preprocessed lines,
comparing it to 200KB of preprocessed code for <vector> and several
users were complaining about compilation times. Compilation times have
improved with the dependency removal. I've contributed a little bit to
Boost.TypeTraits and I'd like to use it, but only if we can make
Boost.TypeTraits depend only on Config/Predef.
Currently, in some compilers (like VC7.1 which is the minimum that my
libraries support)
-> #include
Those libraries are "base", because they are the very common part of Boost framework. Not using them is more like a bad decision, reimplementing parts of them is an afwull decision. Threating them as base/common/core/main part of Boost seems reasonable.
I think the definitive answer is to reduce coupling between those "base" libraries, IMHO those "base" libraries are too heavy now. If we can reduce that coupling, I'd happily switch back to Boost.TypeTraits or just reuse TypeTrait's intrinsics header if that header does not depend on MPL and indirect additional dependencies. Ion