.. Copyright David Abrahams 2006. Distributed under the Boost
.. Software License, Version 1.0. (See accompanying
.. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

Conclusion and Further Resources
================================

This concludes your introduction to Boost and to integrating it
with your programs.  As you start using Boost in earnest, there are
surely a few additional points you'll wish we had covered.  One day
we may have a “Book 2 in the Getting Started series” that addresses
them.  Until then, we suggest you pursue the following resources.
If you can't find what you need, or there's anything we can do to
make this document clearer, please post it to the `Boost Users'
mailing list`_.

* `Boost.Build reference manual`_
* `Boost.Jam reference manual`_
* `Boost Users' mailing list`_
* `Boost.Build mailing list`_
* `Boost.Build Wiki`_
* `Index of all Boost library documentation`_

.. _Index of all Boost library documentation: ../../libs/index.html

.. Admonition:: Onward

  .. epigraph::

     Good luck, and have fun!

     -- the Boost Developers

.. _Boost.Build reference manual: ../../tools/build/v2/index.html
.. _Boost.Jam reference manual: `Boost.Jam`_
.. _Boost Users' mailing list: http://www.boost.org/more/mailing_lists.htm#users
.. _Boost.Build Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Boost.Build_V2
.. _Boost.Build mailing list: http://www.boost.org/more/mailing_lists.htm#jamboost

