Dealing with stack deboostification

The stack has recently entered a period of deboostification where we slowly transition from boost libraries to their standard library equivalents. As a first step down this road boost smart pointers have been converted (DM-5879) and boost::array has been replaced with std::array (DM-4035). If you have C++ code that interacts with the stack, but is not built as part of lsst_distrib you should do the following.

Make these replacements:

  • boost::scoped_ptr -> std::unique_ptr
  • boost::shared_ptr -> std::shared_ptr
  • boost::weak_ptr -> std::weak_ptr
  • boost::static_pointer_cast -> std::static_pointer_cast
  • boost::dynamic_pointer_cast -> std::dynamic_pointer_cast
  • boost::const_pointer_cast -> std::const_pointer_cast
  • boost::reinterpret_pointer_cast -> std::reinterpret_pointer_cast
  • boost::enamble_shared_from_this -> std::enable_shared_from_this

and replace all related includes with #include <memory>.

Also replace:

  • boost::array -> std::array

and #include <array>.

Note that the ndarray package has not (yet) been converted and if your code interacts with that directly you may need to keep those boost pointers for now.

Thanks for this.

A question, though: jointcal uses boost::intrusive_ptr (see: DM-4043). Is there an obvious replacement for that yet?

No, there isn’t. But is there a good reason it cannot use shared_ptr instead?
Ah, after reading the ticket I see. It is just a lot of work to avoid cycles.