190 likes | 706 Views
Boost. Writing better code faster with Boost. 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
E N D
Boost Writing better code faster with Boost
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
Agenda • 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 • 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 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_wrapper • Exercise: access
Smart Pointers • Assists in creating exception-safe and robust code • Better and more complete than std::auto_ptr • Example
Miscellaneous 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 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 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 vector for_each(v.begin(), v.end(), cout << _1 << ‘ ’);
More Lambda Library • Has facilities for most operators, solutions for those that are prevented by language constraints • Lambdas can access locals • Has its own bind • Has control structures - if/else, while, do/while, for, switch • Has facilities for exception handling
Summary • 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 Information • Boost: http://www.boost.org/ • (plug) Vanteon: http://www.vanteon.com/