diff --git a/book/en-us/01-intro.md b/book/en-us/01-intro.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/02-usability.md b/book/en-us/02-usability.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/03-runtime.md b/book/en-us/03-runtime.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/04-containers.md b/book/en-us/04-containers.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/05-pointers.md b/book/en-us/05-pointers.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/06-regex.md b/book/en-us/06-regex.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/07-thread.md b/book/en-us/07-thread.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/08-filesystem.md b/book/en-us/08-filesystem.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/09-others.md b/book/en-us/09-others.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/10-cpp20.md b/book/en-us/10-cpp20.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/appendix1.md b/book/en-us/appendix1.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/appendix2.md b/book/en-us/appendix2.md new file mode 100644 index 0000000..e69de29 diff --git a/book/en-us/toc.md b/book/en-us/toc.md index 5049ed3..eab8a6a 100644 --- a/book/en-us/toc.md +++ b/book/en-us/toc.md @@ -1,7 +1,5 @@ # C++ 11/14/17 On The Fly -> This book adapting to C++17 and translating to English - ## Table of Contents - [**Preface**](./00-preface.md) diff --git a/pdf/en-us/Makefile b/pdf/en-us/Makefile index 0f7aad6..8830fe6 100644 --- a/pdf/en-us/Makefile +++ b/pdf/en-us/Makefile @@ -1,20 +1,23 @@ title = 'C++11/14/17 On the Fly' filename = 'modern-cpp-tutorial' outputname='modern-cpp-tutorial' +revision = $(shell git describe --always --tags) -all: pdf +all: revision pdf + +revision: + @echo '% Autogenerated, do not edit' > revision.tex + @echo '\\newcommand{\\revision}{'$(revision)'}' >> revision.tex pdf: markdown @echo "Compiling PDF file..." - @pandoc -s $(filename).md -o $(outputname).pdf \ + @pandoc -f markdown+smart -s $(filename).md -o $(filename).pdf \ --title-prefix $(title) \ --listings -H meta/cpp-listings.tex \ --template=meta/template.tex \ - --normalize \ - --smart \ - --latex-engine=`which xelatex` + --pdf-engine=`which xelatex` @echo "Done." - @rm *.md + @rm *.md revision.tex markdown: @echo "Copy markdown files..." @@ -23,6 +26,6 @@ markdown: @python3 aggregator.py clean: - rm -rf *.md *.pdf + rm -rf revision.tex *.md *.pdf .PHONY: markdown pdf clean \ No newline at end of file diff --git a/pdf/en-us/modern-cpp-tutorial.md b/pdf/en-us/modern-cpp-tutorial.md deleted file mode 100644 index 26d124b..0000000 --- a/pdf/en-us/modern-cpp-tutorial.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: "C++11/14/17 On the Fly" -author: Changkun Ou -copyright: cc-by-nc-nd 4.0 ---- diff --git a/pdf/en-us/modern-cpp-tutorial.pdf b/pdf/en-us/modern-cpp-tutorial.pdf index f1e5892..237692a 100644 --- a/pdf/en-us/modern-cpp-tutorial.pdf +++ b/pdf/en-us/modern-cpp-tutorial.pdf @@ -5518,12 +5518,13 @@ P endstream endobj 16 0 obj -<> +<> stream -x}Uˎ0 +J$EJ@C=MObzn6Y%K$g^]tApxr_!&r1ytS_"1]2X)VyjT\!6ly4-TUMF׸=Cd/(L7󶾎=Ɯ:sK[~ϭr~8~ Zr?O) އH>+ | hN_/^LV[R'%_z*Vjvf֣nb |)T5nzu@kv -٧ƼKpG}n_.*A$?Pv +x}UM! Wcl~m[C'ӪCm03$P {6q. Sxr_!ft1M|NC;\m@D;mNx!\teEr&]d% ,!0 о c){ + +-Y di[~D6)}N*tKJ@]D7ACzOqEX:'Du y.'! +%4'5=(2 sl%ڒ?EZ1c4ݤ;p=gХJԑ>V|^{1/'x^M݉>^hpqﻼ?5R Ca󞱺XCq[ܦkH(˄<'3212V#@C?oɲ877vi;gZ2n[5kGaiXqgL~;OXG+RÄ+ } Cϊa~+i]h&-T 1勥"lg6#u= +%yK0'#TMtY<|{ xOJX^n2zF\e endstream endobj 21 0 obj @@ -5533,62 +5534,54 @@ xڍ endstream endobj 25 0 obj -<> +<> stream -x]j0}\vh[ B׮Ћaɱ hb/.&*r/

t$H'0r -ܤB͇D1o$hiyS?$a訐VnڀrwLm/9[=4*Ii{])ɈϹxI>`8N?};Yna^{T7RO0 EUKø0m g`)O"P_=)v<{9cu9PNH*3"ztB.fH9H;-tDz ejK!51}'<{čevE&^Qr!IjV˭ ye e]!dӃ`^%Hqt@J03A{ +3.CJQW"1! +)FX3J Rt13EBVIPciZdm:`ֶntܥ> +<> stream -x]_k0w?E;XfbvPNaXƳ hb뷟d~1w3XkI<'ҍNM'Q/ -o 嫰oqp3RtO&36j5Xn)I~ up;ឌocrxFhqGt> +<> stream -x]n0y -_vz1?[)&Ѧ}b l˘|^gfp>MX[}޴&;{MJdE^DeG~6#ϓKQƎxgMudwu5vlL!<4 ݣ -Z 2xOƳ,n3?KgSwo핾k|K77~ĕ@n؛-Msl vl{Z]FHvkx QHHTVGdBLj:FZ#"J JIORDzGPgPRH$A/ HY?[T3'nWv+AR@E&B/ԑAD* -K)xH6pI3]W -TZ%TQI*JAāJz>ϓ_48>n͊I +x]ێ0y +_nR 8E&)=}ClˀԼ}^g8g;̢\{YMn -+vfJvl|V7G3(e + wyʝ';?<~އ6 nll)@ބonJ)SEG=G?Q14xm&D;O]˺3t{OKZ,i2vD%hMK7ʶQ܉)>l߾pms5/_%:$ҠU=,k4=(.&z+(L/ |Q)|GP|/ t*WT+hL3ZB ȷ2uAfިDFBL(gy 35AAw Š @䬣^.!Mw,:k_aM endstream endobj 28 0 obj -<> +<> stream -x]n0y -_R'FZH؃RK`[Ƭ6oE }9NFV)^dg]MVHiſ[jGb9'ځ7ĥ(ƞwz -&L:2戻2hŇqyGk{C?!(YG=/^L&>η)x2e}X5cwϝzw䵹OγsKLduLَ&*R_j5tr K>[ʋf QJrtmi#AɖTi+"(Eف@ (EI5c:*B e|+Be %BU+APVJ݊84u}m_.0d\u֭^ +x]j0}\nh[]]=NIַ_v1Q|9''K?GrUkiԓtUrhL֯ykb)Fw3tʍ\Rf|%kn2]] _}V:؞|#vh8N&a,YݶgmKWvUq2JO]:ni4$ۨ %f*!ϗ;wW9˳˅(j|AϠ2"@k(^t)A1)Rw=jPt%*A@%y%+p^JD e+@PȳՊٹp͖&0|!5Qn endstream endobj 29 0 obj -<> +<> stream -x]n ~ -Tj$ni$NE€0/KC }ݱS¡jփCP¢W 0 %₹śdyF;x],QJ$sy\,Zk] `R0,gZ$U ´Jj !r>0|g/F卻c]̝5 ˗8{E<ۇ`үH}-dMA9,2TMվҠWޫFMm.ޛݶ -#D$)Rth endstream endobj 31 0 obj <> stream -x}V PvO $7$ŮM ]9Wo1{OŹ͐|mjXL Χf|ْK!ǠS۲ |T>lLVVϲ~a+ 7[2#2$kDD/_X܆aVǮO  O7kҳ%īD O!db#H#҉ HK@H39QM|EKz|>6Qee=r\/oUZAUR ]B($:= -(;K**ОZ/ĚQLCpY#jw -`-0C*]ͨATWZq1eU ދq0iCq@|95aPA<,iۃ*v֖WUyk"`kN9QQԔXv_xM8.+1>E5FV{C+$- ѸIρd][Sfg -28+\i@U޽y)"a -=E \gǻN5c'~ HXaxO'T(};5\}@S 8}#ߚvpS1{w/Q7ԒXJd32(,jBX"{k-S:8)LhWS4ĜxnN -6 F PhIbpk6 @$l8(A'8g;o斲 -}sSI{c̱{IF?^;m}vJDI3ʯ{x$WJk^sO96G9[o4gi'r<ͪy$?,TBFOUx Ë0GnIOďH|^_ӒwG}r j V0JXP_~~֍əC2d=0 [<gLqI/A=lcTkL⺁ni}v{kQ>ƶEZTA[mr -`"(p 5Q_U-WTf`ڣ w]C# ա>`:n6nm?O߂ݷdbpEشƆM-ʵZ/jo~Akqe&us 5WFihdr̂j=hgT+#Q:'a{}8LŨ@ uf?Rd1#bͅI=.AmIUrRhu(Nt`OJ -DPde2VVF]!jhold;Q9-u,,xEs r jxWw%E 1A&*m)+W^jgT/WT#;ho=+$>r @=0?!L%f:!ה@ EO.޺xqrv+oo -oD ø1pIe.2mM~rX㑙1%#W>!i*T]>g{av\,5\a;7ZhvN?sY0zEGC}^Ufjt ~{<+oa6UӐj :g]ljl}RyӶXjWG&j X- +x}V PvO&=I'Lww$r$ɀ7l +Yɒm0GFF[R'lqR"K)2>"/xJJ>=\ _^LyS5ϻѨ +"(|v󉟪XjI1ƥv}wTXDҕVSzX;G2-Lo0a|BR 3b0d4>6g3Zm|Ւc 3L6b䥿՘e4،|9hF>vsR2c1uf yg9 祇Yi-<"[/4fuq+WOZf/i+jLY%gBDˈ׉7h"XC$FbH!R4DKOH39QE|EKz|>veKe]r oUZF$R +Y|(ț(<2(tN/.-L'qC*pM0̀WqFt!1tcZ +a8A V3!PA, mً8UlaEΚp"X| f*t8\uuIUg8~wPǘیcVc%'"AYϪqW $~I14'9X*8K*ܸm rs+曮:W݋ǐԺ˂!rC\8r}usPyQW#Vmuq7ޏy0xyb5Cb cz :@C!Y;Lag4>og +K6N-qG )@6){E@ tֺہJY<>AӘ¤v>CgI!خňwj%IlnfAȀ@jB OR~}濳*uSJ#zf=J&?dwCǙ8L4> +<> stream -xڥVkTT0\ R1f.{QZ| PTD^À 38/0< 9oHZۤMML5SmZӚ͏ss^G8;<#6.ڴM&i*b> i;Mr|\g":\y Tcg8g$95Uc"| II03%v[LFILM~eN*Sa,v 6ؗLNR檳2dEnel&@`StVJYZR2R^fd\**\ZETj2lx\L,ThبTB-e}|XV-M -??VT9'?ѱ>Q!1< TiRMr\qR,'E%EJb L-D'Rl>2nx9ռDmwGpnP,.UAt]R`DLRC(!!|XΈҋ-Xr rIkUt{S=_|]?D7aꋖ'@08~8Uj轊)Ժ~{vQƬCUy[: ?o]B e4^R]CPsirw'SdB)3d@O:}yQ_NZ%>ıو' R#N;N[vo vop7ʒʢJz6.;^q Ê?`rAZSRm:̶ۡc+4y|0{\d ]LϾ;re㢙kJ?cGZVA!ݕ"66TˆZ\THlR5=vH¾3ɥ]|߉Qe#7tX$mmMfZ~a5S_}YTG!c-#ZV_aK -4Yi;QʁZQKӮvtu 4Y(/| -k`Fk>R}ٽ:!ӦbR'Egȝ*4P@kEB}&,5R^Tw.)  e2E -;)226rc:@4Ε74.)G$•SknzYQ7؝IG˱٭] y ٨x͎?;J6gU;McOdṮMє#G &A͉ՖjWiݏȤad[%|DcN.}9@2[WcZЪ;T\(/4~=㨏:cB3Nno-}/#^/z긽G|<C*^ 8x)N{a,%m  syLB\Lw@$I`X 0njDITq0(d.:~3$fvڽfcBtLzW[& -0οpoO++NKRR^gm7uBCzS/5.XT\*'jx45 ZyA9><xb`I#-;Sq5>|]rr+Mti!TC5v٫V-){, -!-F̠x-=-Z$I{IotE{ Ij*F|{TW]mi!Sׄ F=x3NE(_ (8vQ(/ׯ 2\DrU2؛܄dݧ>8c:2$S\Bt4.^:=M zsR8 l':MjhPh3jLZ3_)G0 +xڥVkTT0\ R1f.{QZ|@AD塨fp^0#1sEߐ(*5Ik,mj*11ǵ;5?]箵]6pv&x<[b6n[1Fʴc1e& N9Y}3 +_Ǽ`A33p*|1aCN$$m_KWJ#ҥ +M&?i2'_%԰K;lFUf)t6җF+s,vRJ3S2&ZTfe*6GЗRJ^{riZjRɔqlRaҤ +aYTfj49+4ZR%|~~|6EDEFdžj4lRŦK5)YrkJUv1&+5D0Fl$6V"H%\ʸAx8LxùE@ K.\'WW꠶繞wN6QJѥVB 4{L2廬#]mmݧd95>J& `HjUUչѱZԟXwTv\5 $H=1aFigs +I0OaYEf6x rD8'-WA cg JܥJ B(!!|XΈ2-Xr  rwF%5{`<~nfk-O`p:q.лIRu[xWY$t~6#q32+hzS84Ӱ'bNȈSfTɀlGjޱJp%)|crO2N"G0wބ7t&n,CU%UEUx*z%X +t]LQJU0n|aO|uPFS #kqQA"]eHPA:KMu '~SvmQ7a;ZFE|FTaښ̴(jJ2#P=UW uhZ}eXRTtJIRЊlZvSm}cBnk ^No^(xp/m6_SA2 Y6Ũ'6)>FnWjG_3H(MYԲHy!S ߹0S,P7`^ZȤbI+Hcl E;Wn0'DӸ_ +WS_N)rCdecw&Ea/fw0u1d"qF4;Tμ:8fRo{F*P ix1`8E8B².ڷU[;xch0~2\e}_fZdF4 Y[/JptS#2JLʃA! w 5,! 4c,E6shb~ y\!0#\in,*+ Uжv%xk"^]tZ_ UzC]˽O? Jқ}1ŇqqƢRjT=y]}VK?ǣY;v9{KiSalSW3ʍti!TK5v٫V-){r^ +!+FÙ̠x-U=-Z$YsIote{I *F "QES}M?G\'P8G쮣%C I> +<> stream -xڍX XW&3qU\RX=,, -DHrAp@.ֶ֭jSvQ3xs'h>$$ϙ3;}3cVym7}-JEpl[dy~ћ˽ i8FQTȍsDǝЉ90ayF1҈#p:5ߞ߂7md*@|AKlVehwgʡN D4-aKwP;**kj+j3v#gꩳ0ᄿnniyj[.Yuv Mzf n*|͠b8cET{!>l ש^iYaxkoh!۹r(CrC$Z3i/ ?%D-.'>?hmCB8\@vox&%0cQ)}jTS 1o kؾ.o&LT-oфtP1?ێ]hRb+(yڬ,NoěM  - ͆_ no m pp?geiuiԻsOp?: "]"UWP[SQve-o@'(΅ dA/T - -"m?w{^\k@z|khdRl\\Yl"ڴD1pSF%9S|$h X}S bQp6ZF;ȫELkߦ圃.471G!aO{tl–͓I{h0ӏDW5+; -/ d|am<~.RUbUyg)A*HN4lSL많ۘ^L-; * x&UwUl\wf+o8O5 `dOzY=@23`?=hQ]MX/Aí?iD,y6 Zp؎QO -gNS7&h;Wy ]pI{JF'V-|gg?|?EnItQZʖ9fɸ_<=+-a;|"i4+|Ѭce+ݸy} -_,\c=mᰥxmbb#﬎') i󆐋bv2{.Grhg'G.2~ڨNke=OdH':nPHrTUiUiUpjIB%qSeia !4 f vUfäK) OrtPdC??ݘ_K׾lTAxKAUYliYo5mVU1ǚr) -fԦIZhaXC>VR#6-ί=N t"޺rIo>i?݃`>Nrc^&-t膲n&Wg68j`/q&,ewfjAO^ȟ_2"@ q3tw5Zp뉧7.\Vu R^{璠 a_B %;Kt|j\taE%@F-HF^C1_v LJYZ]#cgyǠoHgkrZNH|=Z_m76 rX|D]DlUc67qvzj"{|~p 1q)3,ɾq0f4:.&( &c -#',Bm$!%- !Sd_*0CW>!$ILJ_x]A_Ǹ|]$$psXWF~݁Eb-m -_+)ώ@ɏt+""AtjX.=[]d3{=' .|JkZks(6x[2[t5! [RVSh+`Dp5 /<5'@!Ud/fo(n!z hZt^ t^CL4`ܡ7\ù0X"F#X '}sNX -hĴqh_Ñ{P4bu!~:CIza8lTP`XFu\i'G+S'Ohj Y#qu!~.bٺfDT~g\Mɉ@Lafv޺S׉e +7MvrK9!r\I)F^F  -js~B;jMmQVz_(Wﳖ-hxf!(^ ơ - -8mۓ#hŮL5^qp*ܮmiÁ{>6wYA ?c<9q"P4Mnө/d*V-> -C:Wp:d@'A1;KWlTtX(8n4| :'tOp}ڭA|*?S! _+! 'hDtj ٻNtu{[?߂ |G>B/e*~p-Ph !}#  - ss\XZTqKw'y0Nj/@#?j>^"륈?uT7 !$hiM۱kAV4 d닫nK;qd:z6yP -,\& W<;7ԉI+KK#3l i4j4)xp-;C~SrMC|{.*;e'oMf}>41^5I1 LQ\V#9*xst"慵R}j!QK2Gπxf10e>u tE)9t~[ܒ1l5!Nϱr6l-X@ yఆddAFOB$VU ^0q qqu1a+aԴ#T4f0O#0]T +34 {Bӳ$GnE[9xjyj:d0p?^ +5 3G>;Dh)ZQZe! h'v +[tXyp>l)3ܹ8\ +}{>ff+|-4ah)ܣ+l٣x4Xaz9CKWGТa.2=/ۙ˟u|]Va>É?@z?6p6^;l7j(O:M*Et&#*..q񃦓Ssֽ/KR.E~5k^0˘s@fD-I#*: kfj& ^\Co7)"_|mm%#2CVD)xEY? c#നH + ꖃ$ɷe41 +Z$$찰š=t)1qt~F<dMyTEIDž/ր""/*\@z}?&V֛LZWjݛu0&j&/эO?@kq-rbU'`u>E,]Z}0-AB;IWhux6UQ+ _LQmzAZ +*+omN:omm,p A;GX!V17f8q IlKP6Жӳ3 tV>5c9/_p!Dmګ-l"߆OtH"bp$ +BAF=wIӲ׃ˑ41|vy&֪Ӄhx\ӍO>+ E*f]*:`+`g}}[-%B z4"zޘS`]zXcp`pm\[tZŚ qRzfA + +'<{Yǧ7_I'&c&AS^D; >LJb1\v+{5%%݅s>FHFP2|H1pƿyp$lж9=w>OGr@58-M{{qK_ 'z]+s7EL\`O<= +GlސLdMzaVk'x<3vQ&8u8@x~Aqr!,fsCi/wKiPkZzM7p7^6~%`*4PZ&k}Q~xDQS%g>>*KZ oNw |^FtJ1  l!NG~rOGx'h4_ '?lrf' ̦|v:U^E.qzD,r5fAvNPEq + XNeh8AAz1,;TGWC S8 pxaW5yO猩-^ޒ' ͅ- 7]+{BQLg&/E9jAN)06=ϖjcJi~盲i ''!2t,S͔K1毉NHUu9LG|ho9cQ4;Sl^oJ"K>BΈ <{ҥ: +eW ֟3T6! M:`苜/>~p!=\BoW-ZEqFRyOnVv۬?К@_ +1vJ6>`fxt*aKm~pJWR`R}厣fth0 F銣T`,0Lyc~? endstream endobj 41 0 obj -<> +<> stream -xk``7|EÒ+,2 +xk``WyދW9/( endstream endobj 43 0 obj -<> +<> stream -xڅV TW!Fm3:3Qd/(jJ+ I3!# Uᆧ#Ȼnv[iGjamqow΀+vvd~r 듞ߴex-ܬtҬ_LD 4&0@L ٹ //wp+fb*]< -UAĻ)¤Aǃ3g_dp;3f(*:%jEыH%lln6M3gqQl|9ŧv.gfwhi&$VaZmlsXl$:9Z6ͦ` 5n0k6-ɲ6향 Q5sN-4J"$&$EnXru9vVY =`Eݫ7f l66[-aKerlÞMXKv`:̀Yl,WҨDZ;9V}/ǝo -eS\)Ecb:QC (CG_n쟴yR3Qy9?"4, ߕ jshx/+]ͽ5Jo >y{gRiȢ>\a~bj;Nwd^+`/qGC`7#NGx/ -I ӃOHPN3/@߉U0qqH(JKR^۩sc8?Sm1wW 56fT(1N -E z9H tsD100@~}!Uljf 8f*#zh4GhW{gs\bv8 h"\1!)_hn1||aHH neEwUe9o'S%Yfֳ r);zi.`*%9鉷hk,Q| - c&OFQo^0za"ZҎ shP=䭣_71dS 7a3O'Bnul^%9:.0|i˘,%3H${guFW<·\^,}; Qzm:uku'0f}P/+ 7UtɊR++kmUnվ(myP!?O -_Ԙ gt[zVTOyQpiWU|'@;s<{ht|P^ZZixnb3pj$=N3%$CH(wme|] ́[_#ZA&/[2ro|\KiUs." $kz2q_0ćA^q&LhNuS=gLɷ&K3Vq F'f()eʪDK({Ȱx9Q\걍z^5LcumG#pr"=3я -wYU!2ve)ȥKzo >amqtLǣI>'0~KG0Z%*hxFƖI!EzlS'˓I h -??X}bP@gEeuUEGП4nD +xڅV TW!"eU( +ڗzz|SVi%BBbh&AxD*yy+*ZKfQ|֮{zjkhv 붛L&߽8&c8Oymuqq[QnXӄ hL`pX+G_7K,p)cn,]> fwvJ0%ϸ+fNvhצiM6-gAdT39sŐ ΓؘH6VjV՘H6.S;3;zMtlv kj-V69l`eȊmVcզvSZvuˉ*dcR&`YVm6mHΒ>_'XgYK"V%'F[|e+#m6VY4McȰFޯ74l&6`%Rl^ X"Kv`:̀,,GҨ;9V}/m~o +dSiF 1&!ʣoM8 Fx8>v,4z ϙjip L9M=է +O3>}gg<¥#q믂^\f>  b*Jud_nk`/~Gߛw #Ny' +` +Nz'krMzVD>;yW@8tүy۷`0=eA욘i ~0rn34yUmZ{A>Β\JU#7CeTkUoDuv}Qt<gpfn&@$AR?d.Μa{zzigc>"UM:^U8킋x^4hvll\$C7!vjc" -* z>"^[l 7_zws( a2Uapp00$?Ugm&TDtB]TkڸRzf_S }guD ȳ } JP_UK;zzo}W-f.FAW%lْ2 93DUʔYsbN3 2eDحlP`64$ʶ8Đ׻:@s,e;8 Ro;٥ \$?;Λ q4UWw鑠 G9aoN1$G )"b6 +BA¡o݆Att 111 Wn~9ŏЁ"8ǐcL>VPezT9m&CƝG:aUˮS/l\gMF(ɑ1DžW]LGe)A28 ;?4Pm=wx6>2baj0SY"uý0]4WS$+nH- $AѶgW>ERh39cὟ0ƧsЭ%{8Jl&J^wcg?}Jŝ_`5;y&v/TՑαeCkQ灲Y\WEkbF-AtɎ`8|W}m! TG3AaXFo+Mhd`6\|:::t4yeܒy3$f^_|dG6e J2a0C'yE|(jtP;@r~&ܣF6Oa4"\1CAu{/SZ%&pBeDIlEP:>ʫ:Z> stream -xmTmLSWr/wd4G9GLj( ~d:QVĥ.m~ qAP -Pp4w4f2#ٖ0~lc,c~d}ee3-?'r_td쮂*춙 FR[2LFì4V'g$-f#Jnoʭbv`I?~OaMDž7$e^cV2Y:FcyVw4HuZ7JVlq o&p3i &d%&{0}bZU+Y+Ih1HjNbvHf:XEr4m)6AtE$Vאr"zIn.!NQ$yK^m6Hs^c̳ 9}5{Kww\\Qreڜm'M6&9..UP;=}OM ] -(cJ 冃pzgqt7-ǭ[0"(t鱷*#r(8{HOGќ3@/%g7!XWHF߇C2E<7= W,G_E\cSF&}xufȅ 㜵׶'LS> ݚfpܠz~24'ڸ2 \XGgpzb-Ր_FLqeZ0z.i5/,V@0 *8* .q6 +xmTmLSWr/wd4G9GLj( ~d2Й? +\Je₠Znk)_C(h &i4dF-a',qYƖ;Xg9<'/$'3,fVUS]]SQY%0٫m& ?J4m&GQVL-0$əD$!f !y0rX_SX$!d%q5&%aWLX:qohwY] ERsjȆ0rS}lHxJJvR'ZLF"5q;Eٹ@j,V'iM$~:Dhr moe5LH^;EKSjޒr Ü8lIμD_n>cMn]]IiAt6c% z`3&ƢK%3e6B'0kt\n^6}0>:3>L_mf"#`N"`l/n}Cʘ9g`0܁^\wf>cVL뭀h@:`H~T(Qi)sh$ +-ь0wpȲ +VO0=4mluD09lQ?n*o!;RCG>ps .70w⢅1؆`Yc.k˺14GS8k\ms޹FܠGDt[ +aTG;YYu6 u MT_HzoM#m|W@V:W3=h((v ޚG鱈{")"TǦRHM"Zdh>!(2(#8{HOGҜtZr|g^|KgCٯ4-~U3e9yn< +{X@;$,(Ʀ L𘷻J͐ 9km O|&9Aeh:3̏qeT9"88 ;NO2[!!;8p)ܗa\3Ӓk$a_X- `0Tf!zaBU%s^x 6 endstream endobj 49 0 obj @@ -5683,25 +5685,24 @@ x endstream endobj 11 0 obj -<> +<> stream -xڵnH)nE>Fh9 ;%L$wٝVQP6HP\o(„".|"$ Y"a "-%(#S"81NIILI2FJ# iA,T\Ib0XX[G$X,E`ԐD%C0h8B2G~fU(?D4f游Ƴ4\ǧѥW1I&Z&P2ǚ\m - f+4 2Aɇ aBSb~qFatp~ɗ6o}weo"`4jywԚ7Ы>Y>=O W"R]_:u~ݡwԴ-TV9Hq9 !oP'MgSl\Xm! ǔe$Q[t zt -mԜ) -2HcJop/{LV?_PQ_;LG!byD -(DA dU,,%7 DX Dw A΍@Wt0G0>0, vS^   fKA,ҁ7vnl- , pws4 (DC 8 l@\͔CaaFeHN3j\EZslz1V#!ǽڤ4}7{ãQeR!`@C¡ WpGC>s{7,4צcjoj#kS > Z*I0=l돆_A9΋pPB {8kA }Qt%:fey $H G%v(Q֊8S F-&}A{8O=AG-oQZuPfSuh\Sj؛tb4M>4 $ sH;}́'IxsqOr-z +xڵmoHߧwMT>?UUt5ir6-Jl]of $% + Όg~0-!ВED(D9EZN,b=/ yKOJrpnL;c#3F$*plHD8 L\u #v@ S0 ]zg`Dqy^EYƳӼA8,eҏOp Oi AӺW(ty7t4͊ɏeqxtDaT'B63B@:? hϡ(]X+FP6nRj3q{EWTAc'ƨ*Wyl)(kKqmA~)CQa7&F#fv (?svv{,lvu߉fzJX#R JT8hh6 "H-Rdx"84Of@tn?zW[7M_β+`^ѻXn +,0܅a7b f') vUo}!&V(R'ZHnu[(S '$`ȋ-k4WcZ8"LhrTL!R +<*IPvlYPPciv{uM5+؋XܩKZmA[ +_ gwVoE͢[aAaPm3sgrи͠9[Z Tzn`q/:|տrE_%%<|w( !V(Yܡ6JW17&>AIҎq=FR5p+Imz9\ gk_SyRupUm ]/Size -51/W[1 3 2]/Filter/FlateDecode/Length 173>> +<]/Size +51/W[1 3 2]/Filter/FlateDecode/Length 171>> stream -x5;AAx\-@$% -F$Kk˹/̙@ƀ<24M4G[H۴L;Ѯ[GM&ҞdhMѸt>ͻ{;۟]}uuvd]qDQE9m=q +x-=Q{f$FDL+[ :@k5:~9͓7ܛ(2*:S^_E#M' +Qئӌh This book adapting to C++17 and translating to English - -## Table of Contents - -- [**Preface**](./00-preface.md) -- [**Chapter 01 Towards C++11/14/17**](./01-intro.md) - + 1.1 Deprecated Features - + 1.2 Compatibility with C - + Further Readings -- [**Chapter 02 Language Usability Enhancements**](./02-usability.md) - + 2.1 Constants - - nullptr - - constexpr - + 2.2 Variables & Initialization - - Conditional Statement - - Initializer List - - Structured binding - + 2.3 Type Deduction - - auto - - decltype - - Tail return type - - decltype(auto) - + 2.4 Control Flow - - if constexpr - - Range-based for loop - + 2.5 Templates - - External templates - - The ">" - - Type alias templates - - Default template parameters - - Variadic templates - - Fold expression - + 2.6 Object-oriented - - Delegate constructor - - Inheritance constructor - - Explicit virtual function overwrite - - override - - final - - Explicit delete default function - - Strongly typed enumerations -- [**Chapter 03 Language Runtime Enhancements**](./03-runtime.md) - + Lambda expression - + Basics - + Value capture - + Reference capture - + Implicit capture - + Expression capture - + Generic lambda - + Function object wrapper - + std::function - + std::bind/std::placeholder - + rvalue reference - + lvalue, rvalue, prvalue, xvalue - + rvalue reference & lvalue reference - + Move semantics - + Perfect forwarding -- [**Chapter 04 Sandard Library: Containers**](./04-containers.md) - + `std::array` - + `std::forward_list` - + `std::unordered_set` - + `std::unordered_map` - + `std::tuple` - + basic operation - + runtime indexing - + merge and iteration -- [**Chapter 05 Sandard Library: Pointers**](./05-pointers.md) - + RAII and reference counting - + `std::shared_ptr` - + `std::unique_ptr` - + `std::weak_ptr` -- [**Chapter 06 Sandard Library: Regular Expression**](./06-regex.md) - + Regular Expression Introduction - + Normal characters - + Special characters - + Determinative - + `std::regex` - + `std::regex` - + `std::regex_match` - + `std::match_results` -- [**Chapter 07 Sandard Library: Threads and Concurrency**](./07-thread.md) - + `std::thread` - + `std::mutex` - + `std::unique_lock` - + `std::future` - + `std::packaged_task` - + `std::condition_variable` -- [**Chapter 08 Sandard Library: File System**](./08-filesystem.md) -- [**Chapter 09 Minor Features**](./09-others.md) - + New Types - + `long long int` - + `noexcept` - + Literal - + Raw string literal - + Custom string literal - + Math Library -- [**Chapter 10 Outlook: Introduction of C++20**](./10-cpp20.md) - + Concept - + Range - + Module - + Coroutine -- [**Appendix: Further Study Materials**](./appendix.md) - -Table of Content | Last Chapter | [Next Chapter: Preface](./00-preface.md) - -## Licenses - -Creative Commons License
This work is written by [Ou Changkun](https://changkun.de) and licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. The code of this repository is open sourced under the [MIT license](./LICENSE). \ No newline at end of file