Copyright
Many of the designations used by manufacturers and sellers to distinguish their
products are claimed as trademarks. Where those designations appear in this book,
and the publisher was aware of a trademark claim, the designations have been
printed with initial capital letters or in all capitals.
The author and publisher have taken care in the preparation of this book, but make
no expressed or implied warranty of any kind and assume no responsibility for
errors or omissions. No liability is assumed for incidental or consequential
damages in connection with or arising out of the use of the information or
programs contained herein.
The publisher offers excellent discounts on this book when ordered in quantity for
bulk purchases or special sales, which may include electronic versions and/or
custom covers and content particular to your business, training goals, marketing
focus, and branding interests. For more information, please contact:
U. S. Corporate and Government Sales
(800) 382-3419
For sales outside the U. S., please contact:
International Sales
Visit us on the Web: www.awprofessional.com
Library of Congress Catalog Number: 2005927496
Copyright © 2006 Pearson Education, Inc.
All rights reserved. Printed in the United States of America. This publication is
protected by copyright, and permission must be obtained from the publisher prior
to any prohibited reproduction, storage in a retrieval system, or transmission in any
form or by any means, electronic, mechanical, photocopying, recording, or
likewise. For information regarding permissions, write to:
Pearson Education, Inc.
Rights and Contracts Department
One Lake Street
ratification of C++98, no entity outside of the ISO Committee for Standard C++
(called WG21) has done more to influence the direction of C++ than has Boost
(and many Boost subscribers are prominent members of WG21, including its
founder, my friend Beman Dawes). The
thousands of experienced Boost volunteers
have, in unselfish, peer-reviewed fashion, developed many useful library solutions
not provided by C++98. Ten of its offerings have already been accepted to be
integrated into the upcoming C++0x library, and more are under consideration.
Where a library approach has been shown to be wanting, the wisdom gained from
the cross-pollination of Boost and WG21 has suggested a few modest language
enhancements, which are now being entertained.
In the rare case that you haven't heard of Boost, let me ask…do you need to
convert between text and numbers or (better yet) between any streamable types?
No problemuse Boost.lexical_cast. Oh, you have more sophisticated text
processing requirements? Then Boost.Tokenizer or Boost.Regex might be for you,
or Boost.Spirit, if you need full-blown parsing. Boost.Bind will amaze you with its
function projection and composition capabilities. For functional programming
there is Boost.Lambda. Static assertions? Got 'em. If you're mathematically
inclined, get your pencil out: You have Boost.Math, Graph, Quaternion, Octonion,
MultiArray, Random, and Rational. If you are fortunate enough to have discovered
the joy of Python, you can use it and C++ together with the help of Boost.Python.
And you can practically pick your platform for all of the above.
Björn Karlsson is a Boost enthusiast and a heartfelt supporter of the C++
community. He has published useful and well-written articles in the C/C++ Users
Journal and, more recently, for The C++ Source, a new online voice for the C++
community (see www.artima.com/cppsource). In this volume, he motivates and
illustrates key Boost components, and shows how they work with and extend the
C++ Standard Library. Consider this not only an in-depth tutorial on Boost, but
also a foretaste of the future version of Standard C++. Enjoy!
commercial), so all you need
to do is visit www.boost.org and download the latest version.
For all the C++ Standard Library aficionados out there, it is well known that a new
revision of the Standard Library is in progress. From a standardization point of
view, there are three primary areas where the C++ Standard Library is likely to
change:
Fixing broken libraries
Augmenting missing features to existing libraries
Adding libraries that provide functionality that is missing in the Standard
Library
The Boost libraries address all of these areas in one way or another. Of the 12
libraries covered in this book, six have already been accepted for inclusion in the
upcoming Library Technical Report, which means that they will most likely be part
of the next version of the Standard Library. Thus, learning about these libraries has
excellent long-term value. I hope that you will find this book to be a valuable tool
for using, understanding, and extending the Boost libraries. From that vantage,
you'll want to incorporate those libraries and the knowledge enshrined within them
into your own designs and implementations. That's what I call reuse.
Thank you for reading.
Björn Karlsson