Replaces all usages of boost w/ std equivalents available since C++11 or C++14.
boost::recursive_mutex -> std::recursive_mutex
boost::mutex -> std::mutex
boost::T::scoped_lock -> std::lock_guard<T> (See note 1)
boost::bind -> std::bind
boost::ptr_vector<T> -> std::vector<T*> (See note 2)
boost::lexical_cast<double> -> std::stod
Note 1: boost::T::scoped_lock is just a typedef for boost::unique_lock<T>. I could have used the corresponding std::unique_lock<T>, but for our usage, std::lock_guard<T> is fully equivalent and may have slightly less overhead. std::scoped_lock supersedes std::lock_guard, but is only available in C++17.
Note 2: Although boost::ptr_vector offers a lot of functionality/optimizations that std::vector doesn't, in our case we're just holding pointers until they are destructed, we never do anything with them, so we don't care about these differences.
Part of #403.
Replaces all usages of boost w/ std equivalents available since C++11 or C++14.
boost::recursive_mutex
->std::recursive_mutex
boost::mutex
->std::mutex
boost::T::scoped_lock
->std::lock_guard<T>
(See note 1)boost::bind
->std::bind
boost::ptr_vector<T>
->std::vector<T*>
(See note 2)boost::lexical_cast<double>
->std::stod
Note 1:
boost::T::scoped_lock
is just a typedef forboost::unique_lock<T>
. I could have used the correspondingstd::unique_lock<T>
, but for our usage,std::lock_guard<T>
is fully equivalent and may have slightly less overhead.std::scoped_lock
supersedesstd::lock_guard
, but is only available in C++17.Note 2: Although
boost::ptr_vector
offers a lot of functionality/optimizations thatstd::vector
doesn't, in our case we're just holding pointers until they are destructed, we never do anything with them, so we don't care about these differences.