C++Now! 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

  • BoostCon / C++Next!: Register Now and Save $100

    Less than three days remain before the early registration deadline The amazing 6th Boost conference, now with additional track containing 15 hours of C++11 tutorials, is still $599 for a short time only.

    More...

  • C++ Next!: the future of C++, brought to you by BoostCon

    Join the entire BoostPro team in Aspen May 12 – 18th. With the addition of a third track and the expansion of an already stellar program, BoostCon 2012 has come into its own this year. The early-bird registration deadline is April 15th, so sign up now.

    More...

  • Dave to speak at PossConn 2012

    Dave Abrahams will give two talks at this year’s Palmetto Open Source Software Conference in Columbia, SC on March 28th & 29th. More information at www.posscon.org.

    More...