29

C++ 2011 in haste

  • Upload
    bryony

  • View
    29

  • Download
    2

Embed Size (px)

DESCRIPTION

C++ 2011 in haste. A Quick History Lesson. Standards Process. Work under auspices of ISO SC22 WG21 Typically 5-10 national bodies present at any meeting More participants online Meet 2-3 times a year for week-long meetings Typical attendance in 50-100 range 4 active working groups Core - PowerPoint PPT Presentation

Citation preview

Page 1: C++ 2011 in haste
Page 2: C++ 2011 in haste
Page 3: C++ 2011 in haste

Work under auspices of ISO SC22 WG21 Typically 5-10 national bodies present at any

meeting More participants online

Meet 2-3 times a year for week-long meetings Typical attendance in 50-100 range 4 active working groups

Core Library Evolution Concurrency

Work continues online at a slower pace

Page 4: C++ 2011 in haste
Page 5: C++ 2011 in haste

Concepts Modules Reflection Full-featured Garbage Collection “No New libraries (beyond TR1)” TR1 math libraries

Becomes its own standard instead

Page 6: C++ 2011 in haste

export auto to declare local variables access declarations Conversion from string literal to ‘char *’

Converts only to ‘char const *’ now Reference counted strings

Page 7: C++ 2011 in haste

C99 + TC1 + TC2 + Unicode TR Unicode ECMAscript regular expressions Posix

error handling threads

Page 8: C++ 2011 in haste
Page 9: C++ 2011 in haste
Page 10: C++ 2011 in haste
Page 11: C++ 2011 in haste
Page 12: C++ 2011 in haste

explicit override ‘keyword’ nullptr strong enum forwarding constructors ('strong' typedef) static_assert explicit conversion functions conditionally supported behavior -> more

diagnosable errors deleted functions detect array-new overflow detect narrowing conversions (with new

syntax) noexcept destructors

Page 13: C++ 2011 in haste

New data types long long char16_t char32_t extended integral

types decltype auto function

declarations extended friends extern template variadic templates variadic macros

_Pragma move semantics perfect forwarding defaulted functions user defined literals initializer lists attributes trivial types fixed-base for enums forward declare

enums enum class

Page 14: C++ 2011 in haste
Page 15: C++ 2011 in haste
Page 16: C++ 2011 in haste

inline namespaces exception cloning native support for type traits __func__ and updated assert macro implicit move constructor implicit move-assignment operator reference qualifiers anonymous namespace has internal

linkage concatenate string literals of different type

Page 17: C++ 2011 in haste

Almost doubled in size (by page count) Huge effort to clean up specification

Simplify through use of common definitions More precise contracts, using those terms Learned a lot from the ‘concept’ experiments Resolved roughly 6x as many issues as TC1 (although many came from new features as

library evolved!)

Page 18: C++ 2011 in haste
Page 19: C++ 2011 in haste

rvalue references variadic templates sequence constructors constexpr long long and extended integral types Unicode character types explicit bool conversion operators deleted copy semantics noexcept nullptr

Page 20: C++ 2011 in haste

exception cloning initializer lists range-based for loop garbage collection

Page 21: C++ 2011 in haste

shared_ptr binders function array unordered (hashing) containers tuple random numbers regular expressions type traits Adopt C99 library

Page 22: C++ 2011 in haste

unique_ptr and move_iterator forward_list atomic primitives thread launching thread synchronization futures and asynch time interval support compile-time ratio arithmetic clocks portable handling of system errors nested_exception type_index

Page 23: C++ 2011 in haste

all_of/any_of/none_of find_if_not copy_n/copy_if move / move_backward partition_copy is_partitioned/partition_point is_sorted/is_sorted_until is_heap/is_heap_until next/prev iota minmax / minmax_element variadic min/max/minmax uninitialized_copy_n

Page 24: C++ 2011 in haste

emplace cbegin/cend consistent const_iterator to locate elements consistent overload on std::string as well as

const char * thread-safe strings (no reference counting) simple numeric string / std::string conversions code conversion for wide/narrow strings new facets : time and money better floating point support (iostream flags /

num limits) allocator upgrade

Page 25: C++ 2011 in haste

move semantics random numbers allocator for shared_ptr/function shared_ptr aliasing shared_ptr factories atomic shared_ptr interface more type traits :

decay/conditional/enable_if alignment calculators (type traits) tuple concatenation equality comparison of hashing containers

Page 26: C++ 2011 in haste

basic thread-safe guarantee through library Can safely use any library object from a single thread

without locking Sharing an object between threads requires user to

synchronize access Read-only access generally safe without locking, but

a single write means reads must synchronize too! basic_string cannot be copy-on-write shared_ptr must have thread-safe reference

counting thread-safe access to handler functions, e.g.

at_exit

Page 27: C++ 2011 in haste

hidden header dependencies swap now in <utility> rather than

<algorithm> C/C++ std header implementations allocators vector< bool > bitset constructors ios_base::failure derives from

system_error

Page 28: C++ 2011 in haste

auto_ptr old function binders unary/binary_function

Page 29: C++ 2011 in haste

Most modern compilers implement a subset static_assert auto decltype rvalue references lambda

gcc 4.6 has widest support Clang getting good coverage if you want

to build your own