Está en la página 1de 6

C++: New and Improved! C++ : New and Improved!

! " # $ % ! &

A little about me What do I mean by “new”


new” and “improved”
improved” C++?
' % () * +, - . (/ ) / / + ' & & / & / ! !
' 0 ! )) 0 1 $ 0
' 2 / $ / ) = 2 ! 8 99 $ & >
3 ) ./ , & 0 = & / 99
4 , ! 5) &
- ! 5) ! )) ! 00 0 / ) ,
' ! ) & 99 ? 0
0 ) 0 / / )) / / / ) $ 99 0
' % 3 ) $ / 667, ) ! & 5. ) 5/ ) ) 99 $ &
/ 8 ! 99 / ! ! )) !
/ ! )
' / 99 8 /
' & / $ ) ) ( ! & 0
' 0 $ & ! 2 / : $ / + *
) ! $ / ) 0
! )) !) ! ; $ ' & / ) / * / / ( &
! )) $ $ < 0 $ / + *

3 4

WG21’
WG21’s approach to C++ evolution Goals
' @ / '3 / ! !
& / / ) $ - D 99 /
. & / ( &/ 2 + - D ) ! ) 0 )
4 ! )) $ ! ) - D 99 $ 0 $ ! $ ,
' - / 0 0 $ & ! ! 2
' A 8 & / '3 $
' B ) & ! 0 0 $ :) & 0 ! /! )) !
. $ / ) $ ) C / / ! )) ! !) ( +
:* & ) & 0 $ D ! 2 $ )
) $ * / $ - D 0 / ! ! / !
' A ! & ) /
' $ * E FG & ,
*& / & 5 ) H E FG

5 6
Features’
Features’ status Planned timeline
' % & $ // / ' @ 2 / 0 0 ! D$ 0
- $ 2 ! / / ) / ) 5$ I D ! 0J I3 )) 0J
- !// 0 ! $ :.K ) ) $ ( $ +
%0 0 ) ) * $ & 0 5) 6

' - & $ 0 ) ' 4 & 99 . $ 6


/ ) ! I D ! 0J > / / / /
0 / / / ! / / /

' / ) / $ !

= / / !/ / !

7 8

Also forthcoming … Final disclaimers


' . ) ! $ 50 & $ ' = & 00 ) 8 $ &
) 0 /D 0 ) D ) .) 0 ) 0 *
= / / B 0 ) > K) $ /D! / ( ! >+ O
%0 99 ? & 0/ ) ) 0 / ! / 0 ) 1
7
' D ) 0 =B* $ & 55 !5C / 5 / 5 ! 5 / 5 5
- (/ ! ! + ' 99 ? * ! I02J !
/) ) / (/ ! ! $ + :* ) ) & ! 99 ! )) ! 2 / >
' % & D 0 ) & !5 2 ! ! )) * D
) ) / / 0 / $ IL=M ) 0 ! )) ! ! !
: $ 3 ) $, ! )) / / 0 J
: & $ C/ 0 N % B 4 6#

9 10

New types and corresponding literals New integer type aliases (from C99)
' O ! ! ! ! ! O ' % 0 $ F/ G O

8 0( ! !+ 8 0( !+ O ) & 0 ) E E
! 1 P S
B H 00 ) 8 5$ &
' O 0 E O
% ) 0 ) & > 1 2 )
= & / 0 / 2 / 71E E
' O P / / /
- ) ) E 71E E E
%/ / P =3 / / O
%/ 7E Q2Q P =3 7 / / , 3 ) ) ) E0 71E E0 E
/ E P Q2Q P =3 / / 1 @ ) 2E ) 2E
6
R4 R P =3 ! ,
R4 R P =3 7 ! ,
P R4 R P =3 !
11 12
Syntax to improve utility of existing features New flexibility in declaration syntax
O O
' / & / ! ! $ /D D ' O ) 0 / / 2
# S
0 & / F & / F GG = $ , S 0( $ + YG & / F $ G, 1
#
' O 0 ) & & / ) ! O
' = / 0 ) 8 &
O
LM T U V, & / F G T & $ ! ( +, 6
0 ( W 2 + 6 / $ T & $ ! ( +,
1 1
2 XT , P ) / 0 )
' 0 ) )$ 0 / ' = H & / (I / 0J+
O O
/ 0 / (2X + E,
U 1 1
(+ T 0 ,
7 / 0 ! / ! )) !
( / W + T , / 0 D ! ))
W T( / W + T , ' ) F/ = / PG
V, / (= P + YG / ( X + U X , V

13 14

Feature completion: compile-


compile-time assertions Feature extension: template aliases
' A /E ( R R +, ' 2 0
: $ 5 !) ) (+) / ' % 52 / 2( 0 O
O
/ ) ) Z / & ) / +
# S
- ) / $ /D / / ! T ,
& / ) ) , / ! / 00 ' 2 )
' = D / ! , ) ) F/ G
! /0 & / 0 / % U V,
) F ) =G ) F/ =G
/ /D ! T %F=G, %
U
/E ( 8 0( + FT 8 0( = +
R /D $! ! R +,
V,
15 16

Enhancements to constructors Feature completion: new reference types


O
' ! ! /* O ' = WW 0 & 0 /
B / 5& / ) ! /* / 6 99 =W
% /* ) I ! J$ & D ! /* 0 7 ' % / ! $ ) ) / (& +
) 8 / (& +
) 0 / 8 ) )$ 0 / , $ ) & ) / ( & ) & (++
0 /* / & ' / ! 2 & / 0
%0 ! !/ ! ! /* ) /
0 ) 8 / ' / U
( W W +, $
' : ! /* W T ( W W +,
O
& / /* ) $ 0 ) $ / V,
S
/ $ / U 1 % $ 0/ 0 !( & 0 (++
! , ! " # $ $
V,
17 18
Generalization: compile-
compile-time constant expressions Generalization: uniform initialization syntax
' - 0 / ! 2 ( / O ' 4 / 8 & $ 0 = & &[
! +$ & $ / ) & $ = T &, ( ! $ ) #
/ / 2 & $ ( ) +0 / S = ( & +, (
= T U & V, ( (
/ 2 $ H( $ 2+ U 2 X 2, V
= 1 T =( & +, % = & " " = 1
/ 2 $ ! )) T H ( S +,
= 00 0 0= 1
' & / ) ) 00 ! ) / 0$ 0 0 / ) 0 / &<
& / ) )
' & 99 ? 8 // U V 8 O
$ / T S,
% & 0 8 E F=G> S
/ 2 $ ! )) T H( +, %
= 8 0 $ ) )$ $C / >
2 $ $ ,
/ 2 $ ! )) T H ($ +, & % 0 / ) 2
$ / ! )) T H ($ +, % ' = / & ) $ ) (
8 ! & / FG H / 0& +
19 20

Uniform initialization syntax at work New language feature: concepts


' = & T U 1V, ' : $ $ * )
=X T =U 1V, / / $ ) 0
' =W T U 1V, * & ) & ! / ! )
=/ W T U 1V, ) / ! ! )*
= WW T U 1V,
' = / ! ! & ) / ) O
' & 0 ( = +, 0 (U 1 V +,
& 0 (=/ W +, 0 ( U 1 V +, % / 0 H ) 5/ 0 > S
& 0 ( = W +, 0 (U 1 V +, * :) / H ) ! ) >
& 01( = W W +, 01( U 1 V +, 0 ) / H )
' = !( + U U 1V,V ' = $ &
' / $ /= U % $ 0 / / () / ! *
= ), 2 ! / H ) $ + >
(+ =U 1V ) U 1V U V / $ H ) 0 / ! )
V,
21 22

Concepts at work New language feature: concurrency


' ) =* ' : 8 0
/ / . $ F ) =G
- / /
U & ( = W = W +, V,
& ! )) !
' + ) " " " '
" " " ) K .:? K.
) F ) =G ) ) >
& ) E (=X 0 ) =X + / ( - K - >+
H . $ F=G
U , ( X XH +, , V ' ! ! C ) 5
' " " . $ ) * ) & !) ) [
/ / E) . $ F G 4 00 / & $ [
U & ( W W + U ( +, V V ' . $ 5/ 0/
' + " " ' % . $ * 4 / 5 / 85 ) [
) E F G( 9 9 +,
4 2/ $ [

23 24

1
Concurrency in the core language Concurrency in the standard library
' I / ) ) J O ' = & $ /
= * ! / ! 1 . $ / 0 D( + C (+ O
- ) / () ! ! ) ) . // K. / 0/ 1
6
/ + & D 0 $ & . / 8 #
% ) /( & $ + $ & \ & $ 0 ) 2 >
/D ) / $ / 5/ ) ) / \ / & $
) / $
' = ) &
' % C ) & $
. / / )
= / ! $ &
= / ) & 0 ) 0 / /
/ 8 8 00 / / /
/ / ) / 8 0 /
& $ $ / / 8

25 26

And there’
there’s still more! Monomorphic lambda expressions and closures
' \ / ) ) O ' % ) 0 / $C / ( ) $ +
O
O $ 0 ) D ! & $ )$ 0 $ 0 S
0 ) ) ( I ) /DJ+ S
- $ / ( + /
P 0 ) ) $ 0/ FG
3 $ % 8 / * / / L 6 7M
' . ! ) ( ) / ) + O
' 2 )
) / ! U T 1 5X T X5 V,
1
# 0 ) ( &$ ! (+ & (+ &$ ! (+
2/ & * / ( +
LM( $ 2+ U 2 9 1 S6 7 V +,
) & ! !
! )) ) /0 E E T LM( $ 2+ U 29 1 S6 7 V ,
0 ) ( &$ ! (+ & (+ &$ ! (+
' % ) ) ) & 0 E E +,
) F/ =T ! $ G ,,-. Z
= (+ U 1 S6 7S S 6#6 17 71 ,V
7
27 28

And yet more language additions, improvements, … And I’I’ve barely mentioned the standard library
' B 2 0 K / , 0 & ' B ) )$ ! 5 $
' O ! ) ! 0( + ! ( + ' B ! 2
' B ! ' = (0 ) ) ! )) !+
' 2 $ 8 0 ) )$ & 8 0 ' 2 / ) 2/
' 2 $ ( 0 + ' @ // $ 0 / FG $ $ FG
' @ 8 $ / ' .) E FG H E FG
' :) & ) (I= - 0/ P J+ ' FG FG 0 E FG
' & 2 / ' 4 $ E) FG E FG
' 2 0 / ' / / ) /F G ) 2
' 66 / ) / ' O & /) ( + ) 2( + ) ) 2( + ! )

29 30

S
Summary
' 0 0 ) & ) / ) ! 99 ?
- ! 0 0 ) ( ! $ ! / / + >
@ ) ! 0 ) C++ : New and Improved!
' ) ( !//+ $ ( + &
& ) 0 0 & $ 3:O
/ 5 0 >
/ !0
' I 99 ! ! )) ! ! !
0 C $ ! )) !$ ! )) J
N C . 66
! " # $ % ! &

31

También podría gustarte