Boost is huge, and of variable quality. It was originally intended as a proving ground for things that people wanted to get into the C++0x standard and it succeeded – smart pointers, regexps, traits are all in C++11/14.
Now that mainstream compilers support C++11/14, I think we should ask if we still need boost. It’s a significant build dependency. Things that I found in afw (and aren’t in the new std library) are:
- boost::test I’d be happy to see it replaced by some other framework (google?)
- boost::mpl We don’t use much, and the traits in C++11/14 may make the transition easy
- boost::multi_index I know @jbosch likes this one. Can we fork-and-port it?
- boost::gil We use tiny bits of this in the afw image classes. I think we can replace it with a very small piece of home-brew C++
- boost::algorithm::trim_right_copy
- boost::any only in an RHL internal fits writer; easily replaced
- boost::filesystem::remove
- #include “boost/array.hpp” // not used?
- #include “boost/assign/list_of.hpp” // not used?
- boost::format
- boost::hash Used in the Mask code.
- boost::geometry In src/geom/polygon/Polygon.cc
- boost::iterator
- boost::lexical_cast See http://stackoverflow.com/questions/23582089/is-boostlexical-cast-redundant-with-c11-stoi-stof-and-family
- boost::math::constants, boost::math::special_functions
- boost::preprocessor Convenient, but must be self contained.
- boost::archive, boost::serialization // Long gone?
- boost::timer tests only? If so, move to python
- boost::variant Used in afwTable