Boost Boost Writing better code faster with Boost
Mar 26, 2015
BoostBoost
Writing better code faster with Boost
Boost Introduction Boost Introduction
Collection of C++ libraries Boost 1.30.2 includes 52 libraries, 1.31 will have
at least 53 All are peer-reviewed, all are well-debugged, all
are well-thought-out Excellent cross-platform/cross-compiler support Designed to integrate well with the C++ Standard
Library, and add new functionality to it Can be thought of as a “training ground” for
additions to the C++ Standard Library
AgendaAgenda
We will have overviews of:– Function and Bind Libraries– Smart Pointers– Miscellaneous Utilities– Preprocessor Library
We will also have an in-depth view of Boost Lambda Library
Overview Overview
STL and Boost are like Chris Page and Dylan
Boost helps you create simpler, more robust code
Parts of Boost help you use STL more easily and effectively
Other parts help with exception safety, help prevent errors, and help with code generation
Function and Bind LibrariesFunction and Bind Libraries
Function – like a function pointer and like a functor template parameter: the best of both worlds
Bind – generalized version of bind1st, bind2nd, mem_fun, mem_fun_ref, ptr_fun, all rolled into one
Example: int_wrapperExercise: access
Smart PointersSmart Pointers
Assists in creating exception-safe and robust code
Better and more complete than std::auto_ptr
Example
Miscellaneous UtilitiesMiscellaneous Utilities
noncopyable, static_assert – catch programming errors at compile time
type_traits – determine attributes of types for catching errors, generating better error messages, template metaprogramming
Example
Preprocessor LibraryPreprocessor Library
Used for generating code with the preprocessor
This is useful for generating purely repetitive code that templates can’t handle
Even better for generating enumerations: for example, overloads of a function that takes from 0 to N parameters
Example: create
Lambda LibraryLambda Library
Used for creating “lambdas” – unnamed local functions
Perfect solution for creating functors for STL algorithms
Clearly not as good as a language extension, but very nice, nonetheless
Trivial example - outputting a vectorfor_each(v.begin(), v.end(), cout << _1 << ‘ ’);
More Lambda LibraryMore Lambda Library
Has facilities for most operators, solutions for those that are prevented by language constraints
Lambdas can access localsHas its own bindHas control structures - if/else, while,
do/while, for, switchHas facilities for exception handling
SummarySummary
We have covered some of my favorite parts of Boost, but there are over 40 more libraries
Starting today: use Boost’s smart pointers and noncopyable in your C++ code
Move on to the other parts as you need them
Feedback time!
Where to Get More InformationWhere to Get More Information
Boost: http://www.boost.org/(plug) Vanteon: http://www.vanteon.com/