BoostCon 2012

C++11

The time to begin planning your team’s C++ future is now.

The next C++ standard (“C++11”) is going to change the world.  Here’s your chance to get first-hand experience with the new features, so you can hit the ground running when new compilers are delivered.  In this class we’ll be using real C++11 compilers and libraries to get down-and-dirty with rvalue references, smart pointers, range-based for loops, and much more.

Make BoostPro Your Choice for C++11 Training

  • We know the language – With over twenty years of collective ISO C++ Committee experience, we understand the facts, the spirit, and the rationale behind standard C++.
  • We implement the language – We are actively engaged in C++ compiler development projects for major vendors.
  • We use the language – We’re not just consultants. We’ve been getting our hands dirty and solving real problems in C++ for customers and in the open-source world since 2001.

Format

Five days of lecture, discussion, and hands-on exercises.

Course Outline

  • Introduction
    • Evolution of the C++ standard
    • Goals for C++11
    • The Most Important Changes At-A-Glance
    • Support for C++11 in existing compilers
  • “Simple” Changes “For Everybody”
    • Type deduction (auto)
    • Range-based for loop
    • Raw/Unicode string encodings
    • Unicode conversions
    • nullptr
    • closing right angle brackets
  • Function Objects
    • lambda expressions
    • std::bind
    • std::function
    • Comparison with TR1 and Boost
  • Template and type aliases
  • Uniform initialization
  • Initializer Lists
  • Preprocessor Enhancements
    • __func__
    • _Pragma
    • _VA_ARGS_
  • attributes
  • Move Semantics
    • Rvalue References
    • Implicitly-generated Move Operations
    • Perfect Forwarding
  • Changes to the Type System
    • Enumerations
      • enum class (scoped and strongly typed enums)
      • enum forward declarations
    • generalized PODs (standard layout types)
    • extended integer types and long long
    • generalized unions
    • alignments (alignas, alignof, and the std::align(...) function)
    • addressof
    • constexpr
  • Classes and OOP
    • In-class member initializers
    • explicit conversion operators
    • override and final
    • delegating and inheriting constructors
    • defaulted and deleted functions
    • extended friend
  • Template Features
    • Variadic templates
    • static_assert
    • extern templates
    • trailing return type syntax for function declarations
    • decltype and declval
    • Extended SFINAE rule
  • User-defined literals
  • inline namespaces and library versioning
  • Enhancements to Standard Containers
    • move semantics support
    • initializer_list support
    • const_iterator support: cbegin / cend, insert changes
    • in-place element construction (emplace, emplace_front, emplace_back)
    • shrink_to_fit
    • vector<T>::data
    • map<K,V>::at
    • New Allocator interface
    • Scoped Allocators and scoped_allocator_adaptor
  • New Library Components
    • Containers
      • forward_list
      • Hash Tables (unordered_set, unordered_multiset, unordered_map, unordered_multimap)
      • tuple
      • Fixed-sized arrays (array)
    • Smart Pointers
      • unique_ptr
      • shared_ptr
      • weak_ptr
      • make_shared
      • allocate_shared
      • pointer_traits
    • Regular expression support (regex)
  • Algorithms
    • all_of, any_of, none_of, find_if_not, copy_if, copy_n, move, move_backward,
      partition_copy, partition_point, partial_sort_copy, is_sorted, is_sorted_until,
      is_heap, is_heap_until, =minmax, minmax_element,
      iota
    • initializer_list forms of min, max, minmax
    • move_iterator
    • array swap
  • garbage collection ABI
  • Time utilities (time_point, duration)
  • compile-time rational arithmetic
  • <type_traits>, conditional, and enable_if
  • Error Handling
    • copying and rethrowing exceptions
    • nested_exception
    • system_error and friends
  • Concurrency
    • Basic threading support
      • thread, async, future, promise
      • locks, mutexes and condition variables
    • More threading support
      • thread-local storage (thread_local)
      • initialization / call_once
      • detach
      • packaged_task
      • User-defined mutexes and locks
      • yield and sleep
    • Memory model for concurrency
    • atomic (lock-free) operations
    • Shutting down threads
      • Interruption
      • quick_exit and at_quick_exit
  • Random Number Generators
  • Where the Language is Headed After C++11

Note

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

Schedule Your Training Now

Availability for training in 2012 is beginning to fill up. Contact us today to reserve your place on the schedule!

Your Name (required)

Your Organization (required)

Location (required)

Your Email (required)

Subject

Please contact me about

Additional information (optional)

Phone (optional)

News

  • The Future of C++

    Dave Abrahams has been thinking about what’s next for the C++ language in a series of articles at the C++Next blog.

    More...

  • Programmer’s Grimoire Interview: now in English

    Thanks to Takatoshi Kondo and colleagues, non-Japanese readers can now view this excerpt from Volume 2, “The Evolution of Languages” - Programmer’s Grimoire Interview with Dave Abrahams  

    More...

  • The latest issue of Programmer’s Grimoire features an interview with Dave Abrahams

    Vol.2 of the Japanese-language journal Programmer’s Grimoire, is subtitled “The Evolution of Languages.” If you don’t read Japanese, fear not, an English translation is coming soon.

    More...