Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

boost/thread/detail/thread.hpp #includes boost/bind.hpp unconditionally but uses it conditionally #307

Open
dmenendez-gruposantander opened this issue Feb 10, 2020 · 0 comments · Fixed by Brugarolas/cpp-thread#10 · May be fixed by #309

Comments

@dmenendez-gruposantander

I can see boost::bind() used only if BOOST_THREAD_PROVIDES_VARIADIC_THREAD is not defined

Could the #include <boost/bind.hpp> be moved inside a #ifndef BOOST_THREAD_PROVIDES_VARIADIC_THREAD section? In fact I'd move it inside an #else section under line 50

Boost.Bind brings in a lot of cruft, that is, increased compile times and funny warnings boost/bind/placeholders.hpp(54): note: see reference to class template instantiation 'boost::arg<9>' being compiled

Happy to provide a PR

Lastique added a commit to Lastique/thread that referenced this issue Mar 3, 2020
…ncludes.

1. Replace boost/bind.hpp includes with boost/bind/bind.hpp. This fixes
   deprecation warnings generated by the old header:

   The practice of declaring the Bind placeholders (_1, _2, ...) in the global
   namespace is deprecated.

2. Make inclusion of boost/bind/bind.hpp conditional in some cases, when the
   code actually conditionally uses boost::bind. Reduces compile-time overhead
   and fixes boostorg#307.

3. Remove some unnecessary uses of boost::ref. This allows to avoid including
   boost/core/ref.hpp in a few places, and avoids the associated template
   instantiation overhead in others.

4. Replace deprecated header includes with the more recent alternatives. For
   example: boost/detail/lightweight_test.hpp -> boost/core/lightweight_test.hpp,
   boost/ref.hpp -> boost/core/ref.hpp.

5. Replace some blanket includes with the more fine-grained ones. For example,
   boost/utility.hpp, boost/atomic.hpp. This reduces compile time overhead.

6. Add some missing includes, for example, boost/core/ref.hpp and
   boost/type_traits/is_same.hpp.

7. Replace uses of std::is_same with boost::is_same (with the corresponding
   included header) since the standard type_traits header presence and validity
   is not tested by the code. Using boost::is_same makes the code more portable.
@Lastique Lastique linked a pull request Mar 3, 2020 that will close this issue
Lastique added a commit to Lastique/thread that referenced this issue Apr 4, 2020
1. Make inclusion of boost/bind/bind.hpp conditional in some cases, when the
   code actually conditionally uses boost::bind. Reduces compile-time overhead
   and fixes boostorg#307.

2. Remove some unnecessary uses of boost::ref. This allows to avoid including
   boost/core/ref.hpp in a few places, and avoids the associated template
   instantiation overhead in others.

3. Replace deprecated header includes with the more recent alternatives. For
   example: boost/detail/lightweight_test.hpp -> boost/core/lightweight_test.hpp,
   boost/ref.hpp -> boost/core/ref.hpp.

4. Replace some blanket includes with the more fine-grained ones. For example,
   boost/utility.hpp, boost/atomic.hpp. This reduces compile time overhead.

5. Add some missing includes, for example, boost/core/ref.hpp and
   boost/type_traits/is_same.hpp.

6. Replace uses of std::is_same with boost::is_same (with the corresponding
   included header) since the standard type_traits header presence and validity
   is not tested by the code. Using boost::is_same makes the code more portable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant