BoostPro Computing

BoostCon 2010

Higher-Level C++ with the Boost Libraries

A hands-on introduction to Boost, showing how to use high-level Boost building blocks to get the job done sooner with code that is smaller, more verifiable, and more maintainable.

  • focus more attention on your actual application domain
  • delegate responsibility for infrastructure
  • gain first-hand experience with core Boost libraries
  • increase coding agility using abstraction and “reasonable” code

Prerequisites

A solid understanding of C++, including STL and the rest of its
standard library, and some experience using templates.

Format

Five days of lecures and hands-on exercises.

Topics

  • Exception-Safety, Program Invariants, and RAII
  • Making the Most of the STL
  • Idioms of Generic Libraries
  • High-Velocity Coding, Correctly!
  • Testing and Documentation
  • Function Objects and Higher-Order Programming
  • Iterator Adaptors
  • Containers, Ranges, and Views
  • Encapsulation, Abstraction, and Generic Code
  • Concurrency
  • Text Processing
  • The Standard TR1 Libraries

Boost Libraries Covered

  • Boost.SmartPtr
  • Boost.Utility (enable_if)
  • Boost.Bind
  • Boost.Function
  • Boost.TypeTraits
  • Boost.Lambda/Boost.Phoenix
  • Boost.Iterator
  • Boost.Spirit
  • Boost.Regex
  • Boost.Xpressive
  • Boost.String_algo
  • Boost.Lexical_cast
  • Boost.Tokenizer
  • Boost.Format
  • Boost.Range/Range_ex
  • Boost.Iterator
  • Boost.ForEach
  • Boost.Parameter
  • Boost.Thread
  • Boost.Accumulators


Note

Details and duration of this course can be adjusted to
accomodate your schedule, interests, and specific development
challenges.

Why This Course?

Here’s what one of our clients said about why they brought “Higher
Level C++ With the Boost Libraries” into their organization:

I believe that we often spend time maintaining code that we’ve written ourselves that already  xists in Boost. By /my/ thinking, I would prefer that spent more of our time focused on our domain rather than replicating what someone else has done if we can get the same (or perhaps better) performance from the public code. Also, with Boost being something approaching a standard, it is likely to be familiar to incoming developers, reducing the learning curve for a new codebase. Finally, I believe that the peer review process of the Boost project helps to ensure that best and most modern practices are used. Consuming this code helps keep us connected with the C++ development community at large and improve our own internal practices, rather than becoming insular and inward looking.

As an example, we had our own intrusive linked list class that was used in many places. It was very simple and objects were limited to a single container. Some of us were in the process of expanding and improving it when we discovered boost::intrusive. Not only did boost::intrusive::list do everything that we wanted, but offered a number of policies that tweaked the performance for given use cases. The performance characteristics were such that no one could really object to it, so I started using it in preference to our existing list. Since then, as we’ve tried to move to newer compilers, we found our container crashed GCC 4.3, while boost::intrusive worked fine (which hits on another issue…Boost code has people outside of our company working on compiler compatibility so we don’t have to). Now we’ve started replacing it everywhere.

I’ve used Boost more than anyone else here and I’ve only used a small number of libraries. I can’t help but wonder if there are other gems that would simplify and improve our codebase.

—Jay Miller, GETCO LLC

News

  • BoostCon 2011: Save the Date

    Mark your calendars! BoostCon 2011 is scheduled for May 15-20, 2011 in Aspen, Colorado.

    More...

  • C++ Next Blog update

    Dave and Sean Parent have organized a study group for Elements of Programming. Are you in?

    More...

  • C++0x, Hot or Not?

    Dave recently visited Sioux Embedded Systems in the Netherlands.

    More...