1613 lines
669 KiB
HTML
1613 lines
669 KiB
HTML
<!DOCTYPE html>
|
||
<!-- Created by pdf2htmlEX (https://github.com/pdf2htmlEX/pdf2htmlEX) -->
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta charset="utf-8"/>
|
||
<meta name="generator" content="pdf2htmlEX"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||
<style type="text/css">
|
||
/*!
|
||
* Base CSS for pdf2htmlEX
|
||
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com>
|
||
* https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
|
||
*/#sidebar{position:absolute;top:0;left:0;bottom:0;width:250px;padding:0;margin:0;overflow:auto}#page-container{position:absolute;top:0;left:0;margin:0;padding:0;border:0}@media screen{#sidebar.opened+#page-container{left:250px}#page-container{bottom:0;right:0;overflow:auto}.loading-indicator{display:none}.loading-indicator.active{display:block;position:absolute;width:64px;height:64px;top:50%;left:50%;margin-top:-32px;margin-left:-32px}.loading-indicator img{position:absolute;top:0;left:0;bottom:0;right:0}}@media print{@page{margin:0}html{margin:0}body{margin:0;-webkit-print-color-adjust:exact}#sidebar{display:none}#page-container{width:auto;height:auto;overflow:visible;background-color:transparent}.d{display:none}}.pf{position:relative;background-color:white;overflow:hidden;margin:0;border:0}.pc{position:absolute;border:0;padding:0;margin:0;top:0;left:0;width:100%;height:100%;overflow:hidden;display:block;transform-origin:0 0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0}.pc.opened{display:block}.bf{position:absolute;border:0;margin:0;top:0;bottom:0;width:100%;height:100%;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}.bi{position:absolute;border:0;margin:0;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;user-select:none}@media print{.pf{margin:0;box-shadow:none;page-break-after:always;page-break-inside:avoid}@-moz-document url-prefix(){.pf{overflow:visible;border:1px solid #fff}.pc{overflow:visible}}}.c{position:absolute;border:0;padding:0;margin:0;overflow:hidden;display:block}.t{position:absolute;white-space:pre;font-size:1px;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%;unicode-bidi:bidi-override;-moz-font-feature-settings:"liga" 0}.t:after{content:''}.t:before{content:'';display:inline-block}.t span{position:relative;unicode-bidi:bidi-override}._{display:inline-block;color:transparent;z-index:-1}::selection{background:rgba(127,255,255,0.4)}::-moz-selection{background:rgba(127,255,255,0.4)}.pi{display:none}.d{position:absolute;transform-origin:0 100%;-ms-transform-origin:0 100%;-webkit-transform-origin:0 100%}.it{border:0;background-color:rgba(255,255,255,0.0)}.ir:hover{cursor:pointer}</style>
|
||
<style type="text/css">
|
||
/*!
|
||
* Fancy styles for pdf2htmlEX
|
||
* Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com>
|
||
* https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
|
||
*/@keyframes fadein{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadein{from{opacity:0}to{opacity:1}}@keyframes swing{0{transform:rotate(0)}10%{transform:rotate(0)}90%{transform:rotate(720deg)}100%{transform:rotate(720deg)}}@-webkit-keyframes swing{0{-webkit-transform:rotate(0)}10%{-webkit-transform:rotate(0)}90%{-webkit-transform:rotate(720deg)}100%{-webkit-transform:rotate(720deg)}}@media screen{#sidebar{background-color:#2f3236;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0IiBoZWlnaHQ9IjQiPgo8cmVjdCB3aWR0aD0iNCIgaGVpZ2h0PSI0IiBmaWxsPSIjNDAzYzNmIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDBMNCA0Wk00IDBMMCA0WiIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2U9IiMxZTI5MmQiPjwvcGF0aD4KPC9zdmc+")}#outline{font-family:Georgia,Times,"Times New Roman",serif;font-size:13px;margin:2em 1em}#outline ul{padding:0}#outline li{list-style-type:none;margin:1em 0}#outline li>ul{margin-left:1em}#outline a,#outline a:visited,#outline a:hover,#outline a:active{line-height:1.2;color:#e8e8e8;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;display:block;overflow:hidden;outline:0}#outline a:hover{color:#0cf}#page-container{background-color:#9e9e9e;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1IiBoZWlnaHQ9IjUiPgo8cmVjdCB3aWR0aD0iNSIgaGVpZ2h0PSI1IiBmaWxsPSIjOWU5ZTllIj48L3JlY3Q+CjxwYXRoIGQ9Ik0wIDVMNSAwWk02IDRMNCA2Wk0tMSAxTDEgLTFaIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMSI+PC9wYXRoPgo8L3N2Zz4=");-webkit-transition:left 500ms;transition:left 500ms}.pf{margin:13px auto;box-shadow:1px 1px 3px 1px #333;border-collapse:separate}.pc.opened{-webkit-animation:fadein 100ms;animation:fadein 100ms}.loading-indicator.active{-webkit-animation:swing 1.5s ease-in-out .01s infinite alternate none;animation:swing 1.5s ease-in-out .01s infinite alternate none}.checked{background:no-repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3goQDSYgDiGofgAAAslJREFUOMvtlM9LFGEYx7/vvOPM6ywuuyPFihWFBUsdNnA6KLIh+QPx4KWExULdHQ/9A9EfUodYmATDYg/iRewQzklFWxcEBcGgEplDkDtI6sw4PzrIbrOuedBb9MALD7zv+3m+z4/3Bf7bZS2bzQIAcrmcMDExcTeXy10DAFVVAQDksgFUVZ1ljD3yfd+0LOuFpmnvVVW9GHhkZAQcxwkNDQ2FSCQyRMgJxnVdy7KstKZpn7nwha6urqqfTqfPBAJAuVymlNLXoigOhfd5nmeiKL5TVTV+lmIKwAOA7u5u6Lped2BsbOwjY6yf4zgQQkAIAcedaPR9H67r3uYBQFEUFItFtLe332lpaVkUBOHK3t5eRtf1DwAwODiIubk5DA8PM8bYW1EU+wEgCIJqsCAIQAiB7/u253k2BQDDMJBKpa4mEon5eDx+UxAESJL0uK2t7XosFlvSdf0QAEmlUnlRFJ9Waho2Qghc1/U9z3uWz+eX+Wr+lL6SZfleEAQIggA8z6OpqSknimIvYyybSCReMsZ6TislhCAIAti2Dc/zejVNWwCAavN8339j27YbTg0AGGM3WltbP4WhlRWq6Q/btrs1TVsYHx+vNgqKoqBUKn2NRqPFxsbGJzzP05puUlpt0ukyOI6z7zjOwNTU1OLo6CgmJyf/gA3DgKIoWF1d/cIY24/FYgOU0pp0z/Ityzo8Pj5OTk9PbwHA+vp6zWghDC+VSiuRSOQgGo32UErJ38CO42wdHR09LBQK3zKZDDY2NupmFmF4R0cHVlZWlmRZ/iVJUn9FeWWcCCE4ODjYtG27Z2Zm5juAOmgdGAB2d3cBADs7O8uSJN2SZfl+WKlpmpumaT6Yn58vn/fs6XmbhmHMNjc3tzDGFI7jYJrm5vb29sDa2trPC/9aiqJUy5pOp4f6+vqeJ5PJBAB0dnZe/t8NBajx/z37Df5OGX8d13xzAAAAAElFTkSuQmCC)}}</style>
|
||
<style type="text/css">
|
||
.ff0{font-family:sans-serif;visibility:hidden;}
|
||
@font-face{font-family:ff1;src:url('data:application/font-woff;base64,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')format("woff");}.ff1{font-family:ff1;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff2;src:url('data:application/font-woff;base64,d09GRgABAAAAAAp0AA0AAAAADkAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAKWAAAABoAAAAcpiahREdERUYAAAo8AAAAHAAAAB4AJwAZT1MvMgAAAaQAAABBAAAAVlTYX/ZjbWFwAAACNAAAAJsAAAGaK8ssgmdhc3AAAAo0AAAACAAAAAj//wADZ2x5ZgAAAvgAAAVGAAAGvBCsUHRoZWFkAAABMAAAADMAAAA2LTsbcWhoZWEAAAFkAAAAHgAAACQFywM0aG10eAAAAegAAABJAAAATCNjAuxsb2NhAAAC0AAAACgAAAAoC+INom1heHAAAAGEAAAAHQAAACAAVwBPbmFtZQAACEAAAAG2AAADNlI2Eadwb3N0AAAJ+AAAADkAAABIAVsCIXicY2BkYGBgYmS7yrl3Vjy/zVcGbuYXQBGGp02vU+C0xP9PTH+ZzgC5HAxMIFEAgn8OIQB4nGNgZGBgOvP/EwMDsx4DEDD9ZWBkQAXCAGpmBAUAAHicY2BkYGAQZvBhYGIAARDJyAAScwDzGQAL1ACnAAAAeJxjYGTiZ5zAwMrAwNTFtIeBgaEHQjM+YDBkZAKKMrAyM8AAIwMSCEhzTQFSCgxlTGf+fwKqPMPAB1MDALgiCnoAAAB4nGOUYAADRl8QAUT2DFlMmgxOzHoMBozTGIyYhRhMmFIZlJj8GYyZChl0mfQYtBn1GNSBYtpMNUAxPQZdxlNAOpVBAgAG9AhuAAAAeJxjYGBgZoBgGQZGBhCYAuQxgvksDBVAWopBACjCxaDAoMdgxODI4MkQwpDIkMqQyVDAUMxQ9v8/UA2qXDJQLg8i9//x/2v/L/8/+n/f/y3/V/xf/n/J/wX/5/2fA7ULB2BkY4ArYGQCEkzoCiBORgAWIGZFVcMGpdkRQhzI8pwMXNw8QJoXxOHjF2BgEGRgEMLnLLoCAIWLIooAAAAAAAAAAAAAAAASAFYAmADEAQgBRgGIAbwB+AIcAlYChAK8AyYDXnicTVVvbBNlGL/nvd6f9tprr+v1dm1vt/a6dt26o+1d/2zdOmEwhttIBLdkiJCwiLAMGSiGYIhGEuSLix8EFAcJJpAQDYmJMWrCB4nRD5r4hS8mYqKJIB9nIl/Ibj533cDk8vTee++e3/v8fr/nKQXUAkVR9zByFFWLsZmcXavc04u6Xpx0g467QG3D8IBcoUyK6uHSdm0UalU7Z2RYrmZV4nKMNTImVO32QiScCGGwKvVaHR6knNM09+vh3WOV3RHar6YMiYumjs8efCfap+v8c/4L381xgnj7djTA/XVsfseBhgm6nEzQKXXna4uz6UatW+Ns/1uc/wWKUCWKImvkZypHFSgqnc9w1UrV3gJpjpVjcUv2HrRIvaOF6HGlowua0CMAWTu3mN3DDDqPS0wu+0ZuVB/o9DP3fbwQ5Ni/+S4z6jw+c4amdY0JffxukI916bgQE5EQmRF4Lry2HA8/hOedrzwuKhjmyWeUhidACriqValVJTvXD9U41iwjK7IUizcB5o03TxmJRgKvZ3eYOaqRsBbVvbu1VS1KeXltrO0+ueFyDIZJY2aRYCK3BnkDpwUIZEIel6KPM+ppcl9lw/1bW6WA4Ce8afUWLn5Y6LVMnviFQKnPLipR3qd2kHPw/fbtZpCAEBTXVmORoAsejMRIWAwiP4yklBoDf7jnIFQGwxjpoLJU3qtwg2MDKe4CxeO4Rbcpdhm2tgBHxibUhaoc/yXji3fs7U3H07Kfve7jAiL/eSDR99PLB2haTfF2Yy7AR2Kg4grEpBSGqwIfd7YnxFurqx4H1vo/JEUins9cU+VcSyl1DBrERDAyeRODSONRaKS9XrPdY5DUqf0nb948OTOcDzABYFm/L/TqSLQwYmbS5nB/x9hRBmv0hb7Yefran9dGrWDnLYFnQnP7+K7KwdHWwYrO75tifAzx6h/AMEIIFaHS7VOkq22BjWq6EufsPCq9KTFanIwsH3UelhWlDOrC+3uL1v7pZCiUnJ63s2tHLqoRHU7qEfWThdcbW0XNOa+JE/W23v2II8G6+4s99QxDMUxwETRwjWXJhmst2UNDaxNJc+oe2p0O1d+cOZwMjde6VbW7Nh5KLpaGeyTu7l0X9Tii3npxWNRuGPaPtvGNJkoDgxXERVVRMULJbgdxT3GVutyuygJuaamqKNV2RK3CaVhKh1XvzvkgHX52/iHM04OLDH6IcuUhL8Usue0ZCZNaFbQMSLaBrVEnQxO+gJ93fghM9JRnJ2L2aYFnGZAncqVZeDTlnI0EBPgy6FyZcqGm4CynAsM5b0PBfeBp4/pjF/rDT6UQ1Z1WOHRcUUyCtiBoC4IkkV1Xf7u68vvKbLY5qKWGhnqyg82h5mCWWj+xsnJi6fr1V7YdqiCF89vGj9RVtX5kU3d4gvUoOF3c3B7pOFO4/8vPItKmOC2AJ8cmzyvlxUVPkPDexVlGbhR3JEPHig0ZTg3u+RRFwFo2TDCzu5jqV0TtjtLf9jpcxlomN7yeZznX4SPgeVqJK3FXfxsd7145b7oqtbq7udkMuarpc8dNDF9WkOk4XJ4bf6kuMgLr9YEAtFmaLDe7I8nipCkX941NVp5uBggQNqY1sqVmd4Zu7uhP5JdbB8oyE+E630Nl/JPZ/GihnAgHBEmSi4PDs+29C9g7+G04WUonhnoSZRHESDRZ8DzRuf4vmSbeDAGWozcOSWPTugaQM3JMSbp/HXlvVJLp4eRthgsEefhW6OwtVI9a/KVlvq9QyOnwyNdyDgV5iQB8nRBdFpNs1PkI9kSDeZ/nh/8AZvsftAAAeJytUk1r20AQfSt/QKHNrYeWHqa3JCBFVoJLArnEjQMmToIchxy7Tta2sK01koPxH+qp9O/07/R5tRRampyiRTNv3s7MzswugB38hEL13f3BCu/UZ48DNNWpxzXE6rvHdbwPah43sBN88bhJvqCnqr+h9cNFbbHCR9XwOMBbdeBxDd/UV4/r2Fe/PG7gU/DB4yb2gy46sFhigwIZJphiBUGCmOsQIVeFj8mO6CU4Q0TZg8YDZoxdo6TOyGnkeHR7EfrO68rtV55bj13auctkeJLGHGNa1slbcvfUQwxwjpRScEF9TeaG1h4zomOXmyKbTFeSxPFhGFIey2gjZ5H09MPMrstZJjp/lF7Uj+TKrklmsmtzGZmpno/FjuXW3MtwcJ4O5CK9Ht4M9pj3kgWnLGThmuhQLtlWi43jsp/ahc47elm2aG5bKpzfnIYtFpq66/paOV1wisbNMGK44IT/8+lD8oYRT0ynGVv5t8m3/OwTWujafNW1xcRIEsVyIn8VFaZm8jTXBfl22OJMkvZLHf17JP6bbPtwDXdLXlx1aVVDMY6IcWeKMuNYWU58JK9w3G9GIozPAAB4nGNgYgCD/00MGgzYgDAQMzIwMTAzCDKIMqgw6DCYM7gwuDG4M3gw+DAEMgQxBDOEMUQCAJq6BXwAAAAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCISBmAfMYAARkAEF4nGNgYGBkAILbCqeqQfTTptcpMBoATmgHrgAA')format("woff");}.ff2{font-family:ff2;line-height:0.730000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff3;src:url('data:application/font-woff;base64,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')format("woff");}.ff3{font-family:ff3;line-height:0.704000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff4;src:url('data:application/font-woff;base64,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')format("woff");}.ff4{font-family:ff4;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff5;src:url('data:application/font-woff;base64,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')format("woff");}.ff5{font-family:ff5;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff6;src:url('data:application/font-woff;base64,d09GRgABAAAAABI8AA0AAAAAGmgAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAASIAAAABoAAAAcpiahSEdERUYAABIEAAAAHAAAAB4AJwAyT1MvMgAAAaQAAAA/AAAAVla9YgFjbWFwAAACRAAAAMEAAAGy1FPmVWdhc3AAABH8AAAACAAAAAj//wADZ2x5ZgAAA2QAAAyVAAASkFuDpbVoZWFkAAABMAAAADIAAAA2LEAajGhoZWEAAAFkAAAAHgAAACQE0QEnaG10eAAAAeQAAABdAAAAYgeZA39sb2NhAAADCAAAAFoAAABaXzxaGG1heHAAAAGEAAAAHgAAACAAcQBUbmFtZQAAD/wAAAGfAAAC8VI/1gdwb3N0AAARnAAAAF8AAAB6BN4FVHicY2BkYGBgYmQr/60XHM9v85WBm/kFUIThadPrNAT9X5FJimkLkMvBwAQSBQBdmgv/AAB4nGNgZGBg2vJfEUjyMjD8/8wkxQAUQQGsAGVwA/sAAHicY2BkYGDQYQhkYGYAASYgZmQAiTmA+QwADwsAxgAAeJxjYGRiYNrDwMrAwNQFpBkYeiA04wMGQ6AUAxMDBzMDDDAyIIGANNcUIKXAUMm05b8iUOUWhvswNQC60gpuAHicY5RgAANGXxDBwMDEy7CSIYRBmsGY4RCDJIMagwSDDwM/gyiDEQMzgzmDKYMBAxeDG4MSgwmDOlAVN4M3gw6DMFCGAcg2A8qpM8gxuDKIA3liDHxAEyQAb7sHHQAAAHicY2BgYGaAYBkGRgYQWAPkMYL5LAwTgLQCELKAaU0GEwYzBisGRwZnBlcGTwZfhmCGUIYYhniGyv//wSo0MFQEQVUk/v////H/O/8v/b/4/9z/E/+P/z/2//D/A//3/N/9f+v/zf83QW3HCxjZGODKGJmABBO6AohXQICFFSHMxsAOJDkgHE4GLgZuIM0DxLwgAT5+BgGIlCADgxCDsIiomLiEpJS0jKycvIKikrKKqpq6hqaWNmH30QMAAELeLEIAAAAAAAAAAAAAAAAAAC4AXACUANQA+gE6AXgBxgHoAjACjALkAxYDNANGA4YDvgPyBC4EYgScBQwFRgV0Ba4F8AYQBmgGoAbEBwAHPgdwB8wICAhACHAIvAkACUgAAHicjVhrbBzXdZ4zs9zlPue9M7uzM8t9zOxyl9wZ7lMizSXFt0S9RZGOXixNR/KjVhjFsorIdiNZqWonSJy2Cuz0R5ukheOkjdPWVey6TeAkQAKjTn8EchAHaJGiUGsXKBAHNpw0XvbcmV2KNpSggrgzc4d7zznf+c53ziUF1LOb34AX6eepFEX1Sf5c1ipYjXqbqVXjsuQPxECW4ooB8CIXl9bMg+X2TC0U50LsnfsOLPGh4Yiyr37uswtXVnYZSiQaCd/xtaUPPbsjEqHwH1BLuPfd3t4gxRjcvFFvttrQqFdoYqZZjStxuNvdVBLIpuH0npYoFNESVN1d1XAkFsJd07tOruajQlhFe7g3TWm458/pj1A5yqIoUyqDXKsa6G0Zso36GDRcYy2xDWOAofC1ao5n4Of2TD3G8fZztt34n5QY+tcwJ2uGMGO/9J1XzGOMwJumdUxIJWJwkusX9c7fwEjnXyjXXm3zbfgJfZZKU0PEHiJVoTECDyfPmJXL+gNkJVAnt7KkxGvVJvzk4aPF+Unri/fPzehKPOXnku17Y6P7jpw/PNus7+7PHKzt/d6HHkrPPHr0c3+7q5zQDVkIBu9ZGb6w3Ng7Ws4kTi8S+9/BeBfheSpMKQRNzyQxxm+7h8WCoQ1u/4Gz2mBR10rFzgvuzWAB90rgDr9A7Eyq6GGXrQDJTCEXIBDGwAWx1awhfJgisarEC2GAX1TXWZ5XdfGPRF3leXa9KgeN8wF1VA2cT/fL11st02R4XonB8jLEFJ5nTDXMwC/1GKt3+n3Br4Ov82vCCwuxvIlYlrtIet4rbRpNVnWkCiC6UKiAiyIBkbyAmxeW1598cn16J9MHEJNMRhI50ccEp8qT63dNFRZ9jFX6q/mN61f/4Ho5EPKB7FzlOC4SjbYmPnX6zKfqd+TQtooOvEuvU6Oe7YzLFj6Hl1qmGt8yPg45udYGwqnumlXAFSwNIDSDd8VU5/cdR5YdB343JTCiJIrMv20Am8QrI4pJFjbeZiRLZBxdNC141TKl1Dy6w3Ps0PUBhePY4yzPKZl/HuPIKktw2YsfL6NvCvHtA64RZiOL4WWn89+Os7aGdmX3ipQ1yfaW2anhHmSj93CPWjezBFqeQZALDE+42lsioGNpKBq0abwSEuN7eM8+aCe0pZgWj92ZTLgPWsJulSPHjvqDqtxyn03TVFh4qtNJihDs3MMq7vOreE11bkKI58L43KmxhLfy5tt0GP0Zp2a72S4QsmF6Lbdmux6ROnVD7RYsag9qgywZdK2Ki/hJ170v0GF7eEcq6odgUB+e4Wz7wQrPRXmefP71yllz0IgEgQkGQkEuFBh8dmpsYmL0LnNhJD6yU5HVYOJlyzR5gYFXyeeZ2dxiMmGo84piRFU+3k9DcM8dLyOOVeTo68jRNkXlXa8JB8bBdcUAJe7WdqNug1s6hL2wxd2CV/7xNOBvwuv3HT3VDvCcSfsFVhAZYIbL47XxMxvt2fsP72sFOJ4wOd8n3W9PlNL7Jxv6W08+UIwLzqVIhAvEYtGGnmwXDksaf6wxc3dRFp1LLMdlHmzkjeGgwMZTrtYyiHMQcc4TdUCqSH7MsIuom12y4nrcW6KDjvzRL3wUOfQI0nhqsDjt3tJtq/PNE48+egJ2I05W56XZ/QdmYNYyiY3W5nNwA/Wc7faKAnQrF+JwQxVS0c4/9ZMLTPcX+ESa/qLYj5f3VkX8bmNzDX68+fdUgKJ8hNvIafhxs/NKswnNxaUlV2OdzV/RQfjHbRpb6KoDamvALUKsBVKlGEqh4TanWrXVpumgZhzUdh7Ze/LPPunbcGBAkI1rH17ncvb1tY16sZplOdpKRPXckR1zB5glJpVIqQdWJ171T+zxlTKayQWkKNoPbf4K3kQMk1Rhm31McA80tHxL3zHZrr6/+cjSmE1bosTkbWdeF+qTh84fnquVp5tObf/rpy4Xs1jg8F+mJaX+3Lp8cnxlvDg/uHQUMZlDezcw3jyxFqPd8Ai/3I5iQzbGdANEasENLr9YPfWJZO13xp824iNQy7cG5MDy2JTiF7jSuWBuaODKifzi3PABNdUCJVvOce2VJh/EuLKIK41x6VSpqwpW4ZbsNnrBkS5ZaHR7FwmNpp35FE9Xdx166GGM0Qsvbz9zR6m2f67qTFgWHx++fHL1Uu4yia6jfny2MH50cnxlyeuZdYzvRxifRmW2Iuy2TExmxoBubG69BOBHUnGvvXb1E8dOnUGCd/4zulKfV7A8SsuxtcpC5FwkXzKu/MOVi8dliWlONLnQRx4YdwgvMVvwAn0v6SduZyxkdehNAzyBc7uWjnn1atDwQlo0I4c2ohxf2TjuOJ13Hef4cds5dmoqkigm6IKSKs1YZCjo/DuRVzBMqzy5hwkbFMVQ2mYGNuFbqLNt6iBG681OqFqyxxsZxya6SRSW+OH3BgTvh4COP8iiHtBiveLLEgzIM1JqUxfCml/hlfW5islAsI/rV2H2eDOfe/x7j8+KgnHXfHXI3ll8urpQreZztfuiYlarJNWmwZmrf7gKT1cSHO/rLw7OrMnhPjGM4IIuTmUmV5Z37asYlqkXG1Nr2sBX8pjufLPR+QGncmE/4wsphXSlQjANYwIBOTO81UcIcB7vt1R7C9JuZZBXNFSuOY6hZksLOcf+04qdy1ds5E1j+mrOxs5h3SjlJ9t/SdQFNRhp8xelP3nd4wsOOvAKfYqSUQE+0AF7/GQ8KHFyhFeczs8c5+xpx3lCF045T2ScDP4nFsAg3bbzffipmsmoSiaDew9tZuH3cO80NUjUi0yj3szkiknrljDG5dYtGw+GkoXp0pNpWRwQtBFNvmA7X9AFn2cqF6/Ui9phNZVS+hgr7cBVEs6XejaBEjGezvt7casQkG8Hn8y3trofeRtQsOQ7zsfseOL0bNG2P2/bRbxMpoTH3E73ecdJbzyhYfc34yxcmZyxumMAxv3SRdLaLPO+54lmow+voQ/yb0IUXrM737adh7zQLrgp8hLTUfH7JDEheJGa2Yqh1aPBrXHiNku3Jowu3Q2avKZDzu6hQpTVy7o6vHtYFqOsUdKV4aNOwjASTtoM5MsjycKOgTLnM8igkad/Opie3vkMGTIwUnyYGn2mO3EYeFVSQ0O5Vob9D9Y7c7i8RX+H/p+8VX4rbVMC3I63qAS8RGhLU03UuNdQ44KU1JtmCXN6RwBSza89vHT04sWvXjyyp1Zd3HN6D/aES9967LE724ePjE+eOOFxP7RZhDfR722977ZEUW7fgCrEadvJEY3Gqaw29YEe9Jzr9zumxQmFbT2IpgqbRTrp2i2Tuughtm0q96SUJ59M41ZYdLLyZSRla3bp45dWphzgEjj5FlFMvzru7Diy956Zv0NGftMh7aGsijjvvvcGI8AZa+Tw8kR7eYnkCoUU3kDbOVe30WAMfou4xOENvajvXbobpdq25+dt+35dmD4+WoLzcU0V6HvnznkyTYogNl32+DCL+fkh5mem14FI5yNzHBrqDXF4Gq0w3qlXed8JxAsWxzgf/JArHNq5uxrVyLAmc33J42Oj8SFdHdoxlQmoxd0jo6X+JHnHiz7wL43tbHyY0xumflkuDadQLU7hEMCKh7Iap7B+XyCqOZmoltdEnrdnsNtFY1Fbk1IRgQ5ImoN+K+j3d+lylw1ZCw8kXS67J5AeTt6E3HaXSYbgu6uPHtlfsfe5Z4+nbPsp7FdKTNcZUZBE5rFdC9NzN01rgSWnDnbBMn8W4RKxfiMR5ViOJfWDswLgOXOwWz8eXLcEQyJduw3bl0jx2POFgDP+x57U9w0MSIMlQsWUmK9YViL9yFuuoPxSwGP+sPkD9+H7bn7im7+Gd9Be2ptbGXfgKjDbBletZwresdWzEZvlZf9Z1bbP2Ta3usqRG/iM2XnRYngB5k0LD0I3IUkmVrJ/DPfv4P41bzZgCAVs8IbJAtPVKAPcQ69Cjpk4tbfcoc812VG1UdoflzKslYhIA2nBN6qpIxt4DsYDsFW2ohlNjoklCxdGNkbgs2qs822OjcqfO1FVJRV2xVSTEbI88+6lZLK++A6ZJjy/yBn8LfSr+r7esO0vGHga72EQUFpdf7Zaw1vOOVuWF2YV2T7nOLmPPZBzcKU4tlOSKmTh3gs50htkll5fBzaOxX/tcSyOPL1/P3Ay3j1+zfNDxb5I8K938Y/5tv6agFMaLePZG8/lvzEf15igPlBPWVVNiacYn48djPVxMfh0ws1PdH15Kz+7g3Enrzdy8VQq3tfv80FWCw1XaFhzM/a/0IcZ+z+S5EvqAAAAeJyVks1Kw0AQx/8bU1EPetCbInMSFRLSVAt6rFihNCr9EK+ppm1oyZY0UPoMvop49FF8BJ/DfzeLgngxIbO/mZ2vnQ2AbbxBoXwevllhS+1bduCqwPIaTtWLZRc76sNyBduOa3kdO06NnsrdpPZqolassKcqlh1sqCPLa+ipc8suDtW75QoO1KfldRw6u7iCxgxL5EgxwhgFBCECvjV4fEu+oHVAL0EDPmULMZ4wYewCc64pbTEyPJs9H5HxujX7pefK45h6ZjIlrBRjiiE1bWSPtkeufXRxjQ6l4IbrHS331E6YEVd6tszT0biQMAhqnkd5IYOlNHxpxU8TvZhPUomzZ2n5kS+3ekFjKsc6k0EyjqdD0UPpJY/S7153unLTuevfd0+Yt82GI9OcJheo8shoR5HOdLuokhvcmPJ0aOgpZdP4FmbNObbEDM1nlOCS31/5vO8kpU+dlqodcEgNTZ0VTZ2PEgn9QC7lp763qkpL3avyyGH974Z/CuBX6OovTNjonLdQ3kDZbIAzMh6SfJ5yRiwbnMm/k38B/sd6DgB4nG3Muw7BYABA4U87souhm4jBYGlja9Kg1L2uxfN4bf50dpIzneSItHw/av+YBDsisa6evoHE0Mg4lKlUZiZXmFtYKq2sVTa2dvYOjk7hfHZxdXP30Hh6ef8AK6AMMgAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCbSBmAfMYAAV3AFp4nGNgYGBkAILbCqeqQfTTptdpMBoATnwHsgAA')format("woff");}.ff6{font-family:ff6;line-height:0.915000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff7;src:url('data:application/font-woff;base64,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')format("woff");}.ff7{font-family:ff7;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff8;src:url('data:application/font-woff;base64,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')format("woff");}.ff8{font-family:ff8;line-height:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff9;src:url('data:application/font-woff;base64,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')format("woff");}.ff9{font-family:ff9;line-height:0.956000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ffa;src:url('data:application/font-woff;base64,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')format("woff");}.ffa{font-family:ffa;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ffb;src:url('data:application/font-woff;base64,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')format("woff");}.ffb{font-family:ffb;line-height:0.956000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ffc;src:url('data:application/font-woff;base64,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')format("woff");}.ffc{font-family:ffc;line-height:0.716000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ffd;src:url('data:application/font-woff;base64,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')format("woff");}.ffd{font-family:ffd;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ffe;src:url('data:application/font-woff;base64,d09GRgABAAAAABroAA4AAAAAKYwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAazAAAABoAAAAcpiahVEdERUYAABqwAAAAHAAAAB4AJwBQT1MvMgAAAbgAAABEAAAAVlWZ/qpjbWFwAAACgAAAAO8AAAG6nJCkK2N2dCAAAANwAAAABAAAAAQAIQJ5Z2FzcAAAGqgAAAAIAAAACP//AANnbHlmAAAEDAAAFGMAACDgxCEScmhlYWQAAAFEAAAANAAAADYsTxqUaGhlYQAAAXgAAAAfAAAAJATOASFobXR4AAAB/AAAAIEAAACcDW4HLmxvY2EAAAN0AAAAlgAAAJYamRJ6bWF4cAAAAZgAAAAfAAAAIACPAIBuYW1lAAAYcAAAAakAAAL6zcenCnBvc3QAABocAAAAiwAAALYHnweTeJxjYGRgYGBiZDPtWt4Sz2/zlUGe+QVQhOFp0+scGP3/z39pJkmmbUAuBwMTSBQAgTkODHicY2BkYGDa9l8aSPL+//P/C5MkA1AEBbAAAJONBfEAeJxjYGRgYPBi8GdgZgABJiBmZACJOTDogQQAEukBEAB4nGNgZOJlnMDAysDA1MW0h4GBoQdCMz5gMGRkAooysHIygEEDUJABCQSkuaYAKQUFYaZt/6WBKrcxPGWAqgEAwmMKj3icJY7BCoIAEEQf0lEhEbVMIUHEokOI0eq5Q1702k926yP6AM99iVCD7TK7s8POso5HjsLx/mDiyYMbJS+MNx01DSeypV6kmHJHTEVAQkrEyB5fzDSb5kZ9pZ2AMx8O0mpcegquHHXJZSCk+85irVDJf2crtmEtX6KfWuwHMIcQogAAAHiclY/ZSkJhFIW/czKbbLTRrI422WyWmmaWDabQbRCIRJfRI/QiPUiv0UQUjRD0IKvfo3ThTblg770WfBdrA01UJ4hFRdcmWW72cGVuGMc4mxBR4iRJkyFLniLHlChzyjmXjl8yrEOEmGFSLpOjwBEnLnPGRYXRtz71oXe96VUvetaTHvWge93pVjdfiVqHP2R5+QUt2yy7HjAveaq22dvS2tbe4eukq7unlz78/QwwCEPDI4HRIGPjMOGEwpNT0zOzEZibX1hkiWVWoquxtfV4IslGKr2Z2cpu7+R29/YP8oeF/3RsVMUG+R+xvzXSAAAhAnkAAAAqACoAKgAqAFYAhgC0APwBGgE8AU4BZAGEAagB6AI4AnYCuALyAzYDXAOCA6gD7AQoBGYEkATcBSAFdgWYBcoGLgZ8BsIG8AdOB6oICAhECHYIwgkGCUIJZgmKCZwJ5AoeClIKjArCCv4LbAumC9IMHgxCDKgM4A0CDT4NgA28DhYOVg6SDtAPNg9+D9YQFhBeEHAAAHicjVl5kBvVme/XLalHR19qSa3W0RpJo6PnkGZ0zmXNeDw38XjG4zG+ZmziNWCwTYgxxMYGjA3xJhU7QLILhCKQpHJUiiQGbLP8QW3YqoWCKjYLjuMkm6yBkEB2NwEK2A2xNfu91y1pxjipTJVar19r3vuO3/t9R1M0FaUo1Eo/TDEUS2VOIirb/yRrof4nd9Jm/Y/+JxkahtRJBk9b8fSTrA1d7H8S4fm8FJVSeSkeRfa3X3iBfvjStVF6A0XR1FlYs5veQ0mUCiOPzcvyKB7L0oUKymlI9NhiyUIph7qtFpoLpBDDKrIoK+HWcLiVLmp7PE9EpMD+3/tDVmvo0sd4NkzBH6KeWPwBOkWfpiIUZfXY4rFkKlksVJh8zuf18Ijlaa/Hp2g0OsVLnq2JmbYVw3mHxNtYx8BMaPZqZ5OtZJdXF245MX50w5Am21mnlW07sLt7/mRfk9UJ62+A9bfB+iEsNc/ABsVCuYKKhQyNdyrBRooPbSPrioKyZdrZvKZHFES8GcqZqwpC5amNzcOf3p50CGQ7Q/ZhahN6kbZTXRSVwLKnkimQOgYbsHCpoAFkbhFB8J3zetgyXASk0bDlizLvCM7ZmSHmYNrO2nft9su8nd9F7tVdbDnj5M+5vGLemlrb2ro2NR6181ZrXx8nu7z2gdqcW+izhPxNrCFPkppBv6VlSoY7TxsCUVaAjwp9oG0ujPLot9njo8ez+ILmRk9ksyfIxfjfpxf3oU3UIcpj6oLNVCobA2wktGl73OUJ9QkOR6AlFo51qeNbPC5Pk6fCxENqohuv0Y0EdBbNUVgcTzwaK+Sj6Gy2+nw2iyqw4yj+zYtwGYF9nI19yPIjLUE1gT8Vf7IlCB/4be/iE+hV8J2AfcciUypEfv9qU/U05xM8TWgSf9EP2NyXpkJe3uamnwx5sU40lVv8EP0CMOukvASz9d3YQjJmA2DlSugXd6yfuxN/RtZ/dv26W9ehrntPnzoGn0M3fuGLN+x55BGQowD/fR7WaTdkjoJzB1CpWEjGYzYWPN5YGFwMoM2D7/ENOi/6q0/owq/2zg/pK518UBLDN61fOLzb/w/+P9CipDh1vxThuWe3XT0w1hp3ej2qog7tuHHDddf4DnrcAu/1EN+0gx4XYP+eJTYje2mwDZajDcUy4OQSeMwQi0jVEMoGv0QX9m9duCOQVF3S+vTKtTMjGRcnqNn+aOuq/HTEHoyFdmyc3dmm5ys/mPjMzJDiD7hlVyR4VVfnalrgPQ6GCcaKsWzE7vaofqU4ONvbuiagzGE7w1FGf6RvolJUK5YQkJcHTvDCgBwDwJ/hORmPQR4JP05JDPpjeqoCUqSfTgucq3LRL9p/Y+flkCpOwewPfv2Ctgu21jReoHeJfh+HrhVsolp9jBYkNF/9JrFNAWxznt5OZZfjCYzjM2wDxoBpMI8ED6KmXF6CofN3L8zeHBalINe8YXDzSO+6VpdbEGjRjzgs1bulobk9z83eumkg4PN7ZW5gpq84lxMEjkMOv4Qley78uYZ/9sL5wyhjeQuLJQHV6XLUg2kyuQIRSCh4f3SBFZTMys4W4KO41Hr1iur/ESzQohiwoUnYmR52OHiluH3XQzMeT7Zz95f+cSUBQyvH8yItEGwXYc+fASaaqYyJ7QxdgwXWvHF0NRrgnsJYBcTDE/SzB6/rGAg6AQp2X/vYzqbBudm9d6xPjlQSU6IaK/asv6qvfzXqPvG0r0UTfGrALTmlwwu9t85tuEVbdac9n420TQ/0zg4TOch5Rj+EM6YsP2PSFU937YM+Yx7z6lON894NDHKWbq9zUCqRLJQTpjs55ENnfZxDrD7l9qEJ0cH5/NXXUcS/WZQd/861CP/mgIgjnDolEFwsWYvysFaTOzqQIZFihbWqZ8giKFJ93Y8XRqvR8JJlZLwu0TEIC74H+NYNBjBPGzg0FWcJoHhEoF4u5eUKDTOKnFN8KSdC77Vdy/GCIPuUbyg+WRB47to2yZbYbxHFFkmw7E/YpO8NDWkazfMCT19/PQ1fPK157DTtcksM43Zf+pBhf4h6q/8K0Rxb+A3Auh8ivE5sRLbtQ1KcfNWOegozApzBktscoDcW1nyU1oNBPf3G1EJfV9/oplzPoetWDnp7e75wZ/93Bq/TIuidiLa1PzMh8ev/K7bipeHqf6771BtGbEgD1n4DWGtbdsaUCl2ErzAiEM+gVAbVMQaWyKHf7JvbfuLEpyd6bDbGJWq0JPIiQzvGsyM33jjautZKN8e/O7r79OfvPd3p5GxI0r8I+HY6XH3DD+za/UDPyjC2PcQy9Bbo7CZe+KTGLFZRwrB+6/Ztr+i6z6frr2y7fWTTmm3b1mxCHQdPYtW0yD8d2vZQVbmP6BOAy0ewZk+Dz80VgSB8pkJwZuNek8lrU8W4N1qskftHQO77dF3TdB3tUwVQT3F+eIQRjKPsdx5BTjIHHG9YV/JPgIJeT/FlVea8nnm48cVfHyFzRC6co/we5MqTXOUvy7CEXZfI7YX/xft9fKwhw7ECJrKHdT0aBSkPqQJ6zxDh3BIRzhGSJVaS/FgOn2mfVUvQjkn8clonWxNON1k1X4ybPzZnCNOjj9K3YTHUsyr+ug2Tvari67JpMsZDOA4g0Btv1LgfBIMrvnvpJXzFn6pCG+d8DVyeA1kVLOtlrjQlQM/p1Td1fdcuMEGYfIO2GvZIBNaBNZphjbdhjXgDD8vVMxaqe/5t8PwxLH8iga/f0PXu9+qurguMFx/heQ47F0HeTKE/wx7jpk3JYlKcp1kjccwwqbi01Lx5qWZKxa3kSwOoQhNJAAT4d+jP6bVpwe1B1q52mvPJTqsXKQHVgiBvMJ7gQXfKMc8i1rPKxno93easpmlANuhX/oeOWHyCrUKPr1krVuPAPcaDd/DIX30nGut/SeSceA7MzVN1jL4LepQxRsEqJPKgFBOX6uAwxJbqUPApcn4pVNC7aVVSRcFtewYR199Qd316WFGaYBab9QYSCbUqE+QZUUIfVBM154OEcOWUqgv90oCGke91A0+dBZ4KUZ3kBFlABEuhYgHJbGzB4CcWGEoheVO5hM5a3EqhL5fvLShuCx735pNdmaDfaadHXM5S/2DR7nTZC4Mri01O1DU1P9Wi2mxqy9T8I/NrYMi4pIQ+NtV1LJtSQ22Zu4/nU82xthKRBXPMBcLVzTgC2QgPLz+02DQ1gr6wc90hIJLDBp9cmE1MDN1wwxD68P49z0Q0gz7e2vKpD2p67iN6JvEJRSTlhCKGLJ7FWfJypes695FyBO8aATChszY2Eg3aIs32YNMKZ8cVjWBvKt6bczjsTZ2DzRlLs1NoYjt5nkddN5dW9HN5e4WWXfvQJ03ScyDfFW1u67znQL49uZG1yVbn1Q7/DSC7b/FD2gF26YfqyYzyGCYAoeQn88YGakhkI0pqdD6H4w5tmo52dLQWA5yNtjubu6YuZ5iTc7vTHXHejqwuh4yi8UfHB8fHB+dbhjO+ru6AEnCEzi2nmR2rEqvVUFQZCwSifAdIs3boXCPP3GNwIpYak7GZ1kHAB9FIuplFJBEn0bEeG1MZixEZIwj/FJ3fOXv9ClYQcEgURBox7Zmx7qGb9vaP7JyZK1ttghM/0SyM1RMoRAvDmdjMYDHc+e3RGzMBj34USNvlcvaFIsNtG/1BaUNh6NNZt8iRByHJ3ab6+tKxnMMt+EKFerx7H2zetjSufPK8euu5asmIJ+8TUjtKYsgT+FK4h8yIKvp8I5RgKq6dyyKZmlBFCCSIsoCvm2DfljpXQPiqQZ9wKkkW6lN0k67d9OBN5jmY6GifJEN6JFL99uaDBzejTfgsVL9/1bq5STQX0bBuQZOPepbyaopdjiM5Vd8UVFTKNWbCP2FlOH7v6tenBUHYvkUQRTzkXL57PqfoeMjzq8cEUUhfD7nFzV9S4HximDz/fB02Ta9HyOD++/FURLtQ/V+QC+ctfwK5ugzdGe9l5i4y8YYUIJSvIRUw5J/S3geWRMWvePEXFlHc6tgpCjA2yfGVMzXjnwH7YZGArV9I/DemcKBFRJjwdZAjVYttGQQldHS5rzVcXjcym9chvj0GnnSgiWq15vEpPFE9g+RapKPFZgG9Vfc4vq0Gx41sBlG/htr9TajdFdzXAa2TuP66LC94M31KFUT/Kazcgw/CtQg5En3GqK0u3Uzk12GdTG0d25Wiixdllq6B12w1lqBP4KuR03QvbkRnF7+OexOWy3sT1+DWBOkXfEyz6BkqQeWwtcjRNdPdMikkeeQ1crACScgAvKkizGEUlys0zQqSe07p3TC5+Zt/P9zv4wUbCgly4L7t272p9PduPNjbUWxxu5kIuKg5OV0aXU3n8whZbKrX75tYWHG+aWIdk0tobVKTImJ5XIsfk7wkSKVrrANCkVq2Fj/CyOxnAMEA25D67u3bZ4dy4A6J7kjrE6pQmpjeO7K6nJ3sL5bnzi/clRcB1DyHLuF873TX4S1DC8PtEx2bt2A7TcCer4INWogFaKIspjLS5UgV4jHSkcP6AlbQq2J8snP+TrWwsOKrAbkN9WdHovz84FjIyvPx3fZom3Zkc8vEWPuEV+2yt3R3+Ybn+/kmrFsL2JoC3cK1ngFs1CgtivWCRsI2LjSqV5rSJ0Ku0vj0LQdmh/KGgh3ph4ey5bnVpeJIJOLRug9vWbir41GsXZW5Z6xteMvI0MJm2LMMuv0EdAsZmR7RzuwWwDiKswKilpkpoJ94UpOZbffesXF+h41zOqrnXFv7pgJYtTHbaLYw7dztjOuhI88c2b+ZE1lUmQTdPjvaO1EGO4JW6BS9E1eMULVgn4HlwijfOADeZelqnxE20Klgs5eVlITnAMbygR26Xn1P13fsSOt/Nz+4je7w+L1uC8PFg1mSBr+Mk1hU1CLFyhhgmKHCi0F0CT0LNcQANVWryFO1NlXK5sWRyoezSiwI6RGVzQ82fANNhrnlQoY2sybcLbukCk6/JaoGto0UEzbkdHmbvKObS/HYseePTSqeZphuz/YlWp7uTqd68GdXbDyX6Wl269fefy066vGKboZva1+1oAqcDyrdsDzQPLBudnBNR0RPhfXSyq1aPHo03d/XCp/qv2hJgbG4Au2xYhFj04WBA5jpqHM9tpoB/SslV+Rw4Ec0lX5Ihw2SmTXtevrrab3dAE5x6u52TOiRN7P66PDJSL0Kerb45beNXAvb8AV6nvLiLlfiMpcZ+KRrze8X9OrPdX3/zbp+XBV26sdJ9xsvj4q4+queoRmz841IR/Ii6NK7PG5dHiaW8pxUXlaQsArA5aJ+a1qQfbdNd5FCD1+6yHClKnyDVCdQ/MVv/2pEN7L+r03OLM+iQazHHjTKlb3P454ryPXaleqpRucOvZaunknrh+9O64+qwt2kYqsZrsoYddniRTCeBZ3C9mvoV3PWsjrnipNSIxgqJi41mvyGtuhX6aLAueVol08Wl99s0EXZhwfNLo5HqWxRSVQiad4CU0bcfifTMjHwFCl1lt/hwqdIoibPtxQK0bImvl+reQjuQJf2vxF33r8Ku5DrSrCDIyyHCOpoqgd46jXgqSbKTWoHo+GrNJrWr+3/7v793y3M7JmZ/sw0Kj57+K6F+SM/X7Vx46qR7dsN3LoWY+htkDlS61rHUlcsQLx/IX4sETjAfyKCvIJlpmUt4laXxQ/QeDFGq7BvDHdkrUvynQa5k3hiYolZxu1q+jsEweXp2f13rZ/MI5bnFCfG86Oriis2znb3TP4zwe7P+g9vmT9cdguS1eu59BotoFtSpY3zw6vmN5v1/O9AhtY6/9U8RfKfy84VYQmNRr9TJbcfzW29CSj3z1iMmRl83aMKY9vDuptFt8n+gPvm1YcixvEpGscnNsN5ZQMn4+C3l8FvQyS6MEb2YNYItQIhQ0M1YLzhUpZ1zwwzRJAPvWxX9dGOqYJLxWWAm7OEtw8O+rORYIteiaqsPzXeOdBu85sNNWRbWFm5ZvjxQ2JzIuROJvVrIAXjxI1pTQ5KrMXGyn49wAVjAbfXq+Nmk9Pl7I4prVAhYZlVkPnHdCvuIicw0vAbIwPfZtepRkhG5VUxHwAL/HjhwPSGtH41yQe/hU31LYaLBcXmKANVjUTfURldueoDLbKWpIRrsbX+wMthwR4POXmO58yzhfMA9MM6p2cIUopLKMfYl64JZnIupAGwZW7kuMHkEBFDQjSt1hKCSIQWhOTnEEVI6X1R8jlYub35p+T2DOzrX7yIPoB9dTM/x8kA6WMsb2kF0ZKOFvogre21egRQSLbt1TC77sN6h3bvDuFvfIO+rFW/D0UdLYpoXa1vVX0ODRm0S3QWYe+LsPeIWY+RzSHpSMVt5K0qYIQxW8xkX9JflvMVVDZeVyp5GUtV76dcFCS5n7F4JM1lTQIgFN4dFtx2hu6XJdxz3ot70DzXVUCMzjjDqsT7rSjXZczih+g+3OP5Ec85JefRWOvaTh+Uy040bbSjaSEET8/x99l8/ty6MGolE4QczfoLdCn/pfqrD5X/WvWlkOprXxpS543rPRIYUdfTB29N63hOlD41KZlzn70rbcaw228njB15/CuQ+8D9jh34PqJ95XFc6y6GiF8rNb9aGu+E2FIZv5QtfMLL2KSlgctd/TULG4rkQy1Zv0f2W/Nhm2xjLccjdber8zJUf+7xZb7vcbrzsXBX1OP3yz6m7Cx7fYwD7agh4d0CGyv8dAkW8Lv6X4K8JAtmo+Z7PBS/vEDD/Y8lJdovfdV7AIasgLr/VKvQ1pGJ6ouIM0q0uA1AyLkElA6QI5jBRRqeqJ5Pmk1nBLHmCYj3p3HP2Wo2K+CoAWMSm4G9QAIMOyIBfpcWRpBMAm1ptJJDrwGANpX9KkN/PuZuGkuqTuT5EQDK3XRAZujuXqvS3xkrgO4a1xr0fbtojQBlOdXIpinbDjCCyKebVh7NRZsHHxclvwv9Le+Q/x/TYJBvAHicnVLBTiJBEH09AnGNMd42m3ioo2Yzk2FUEvWmERPioAEhXhttYAJOmwFD+Aj/xHj3W/YX9iP20dPrAW9OZ6peVb+qrqpuADt4h0L59T+xwqb66XGAmoo83sBv9epxBbvqj8dV7ARbHtewG5yRqSo/aL25qBVW5Fc9DrCtxOMN9NWxxxWI+vC4ij311+MaJPiFC1g8Y4kCGUYYYw5BgpjrECFXiU/oHZAlOEdE2YLGAyaMXWBGndGnkePR7UVIHavt9kvmirFPO3eZDE/SmGJIyzp5R989dQ9dXKJDKbiivqHnltYBM+LCPi+LbDSeSxLHh2FIeSKDpZxH0tIPE7uYTTLR+aO0ojSStl3Qmcm+zWVgxno6FDuUO3Mvve5lpytXnZvebfeAea9ZcOqKs6izXVynqc1tnWjVQ4EnVy3atnjS1E3HnTtdcGzGDS1ipOCU/3q+kI0Y8l6YRDOiZDXor/sRJ7TQtPm8aYuRkSSK5VT+VxF2zOhlqgu6GmGdXSeNrzWvn4H16NVbNNyY8S7KeyhLjnFEjL4pZhknxaPjI/lO/n+IDn3lAAAAeJxdzclKggEAAOHP5WaWKWWEEYKVUVBpLuBCiGtKZmpqWm/iS/mC9eOxuQzMZYTt+d3qBAr5z+u+hkVExRyIO3Qk4VhSyolTaWfOZVy4lJVz5dqNvFt37j149KSg6FlJWUVVTV1D04uWdvDt6ukbBK+hkTdj7yY+TM3MfVpYWvmytvHtx+4PTCwRMgAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCTyBmAfMYAAbBAHh4nGNgYGBkAILbCqeqQfTTptc5MBoATrgHvgAA')format("woff");}.ffe{font-family:ffe;line-height:0.923000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:fff;src:url('data:application/font-woff;base64,d09GRgABAAAAAAWoAA4AAAAACFQAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFjAAAABoAAAAcpiahXEdERUYAAAVwAAAAHAAAAB4AJwAMT1MvMgAAAbgAAABGAAAAVlU7gxBjbWFwAAACFAAAAEcAAAFSIaspXmN2dCAAAAJcAAAABAAAAAQAIQJ5Z2FzcAAABWgAAAAIAAAACP//AANnbHlmAAACcAAAAQAAAAFAHQf6TGhlYWQAAAFEAAAAMwAAADYuChrhaGhlYQAAAXgAAAAgAAAAJAZkBA5obXR4AAACAAAAABQAAAAUC+8AWWxvY2EAAAJgAAAADgAAAA4A9ACqbWF4cAAAAZgAAAAfAAAAIABKAF1uYW1lAAADcAAAAb4AAANOO6TnlnBvc3QAAAUwAAAAOAAAAEEDmIDMeJxjYGRgYGBiOHLthLtrPL/NVwZ55hdAEYanTa8L4LTi/33M65lmAbkcQLVAAACg7g5VAHicY2BkYGCa9X8fAwPzCwYgYF7PkMIgyYAMWABy4wR5eJxjYGRgYGBj0GFgYgABEMnIABJzYNADCQAACDsAqAB4nGNgZH7BOIGBlYGBqYtpD4MiQw+I/t/D+IDBkJEJKMrAyskAA4xAnADjBKS5pgApBaUspln/9wFVzmJwgqphAAB0YQ0YAAAD6AAhAAAAAAPoAAAD6AAAADcAOHicY2BgYGaAYBkGRgYQ8AHyGMF8FgYDIM0BhExAWkFxklLW//8I1v/H94ruzobqAgNGNgY4lxGkh4kBFTBCrBrOAACh9AxMAAAhAnkAAAAqACoAKgAqAFYAoAAAeJxtz0Fqg0AUxvH33lTHcWraGE0IJaVjIJYGUqpGC/USgQR6gi6zzLKQE2SfS4geoNtcogfoxk3BXdUme3cfv8UHfyBQAPhER2DAYZEjPKcFv4IyyHXtOy0YnSfk7MLahQuu419a4MXDvur7YX+qUPycTnSsPxS9n+8gaSuWYQt3AODwHnJ9jt4yTpQXhWrmR28YjO5xxDJjte2RsOV4V0vXpWo3lrag3naFdEuT/VpYh83j5mCJ9X4CBK/tF8soBhfmAJoz9XycLaM4wTgMhq7DBQ67lT4dw6x/bS7p5lrj1qCRWA3wpUsXjo4PwjLOoUqXQppN2ZSm7NR/4o9BO3icrVLLattAFD2j2IZCSRdddFPK3RQSioQsU0OyjIlDTeQEKy7ejmPZFrY1QVIw/oN8TCn9p/5Ij0bTLrxoN5XQ3HPPfcw9MwJwiu9QaJ6vf7DCG/XRYQ8dNXD4BJH64XAL77y3Drdx6n1xuEP+hZmq9YreN1tVY4UPqu2wh9fqs8MnWKiRwy0E6qfDbbz3PjncQeDNMIDBEw4okGGFNSoIIoR8e/D5NviC7JxZgisEXEfQeMSGtXuUtBk5jRwLGwsQ26yxjTeZdcYZ/dx2SrmTxhZLesauD+RmtFMkuMaEq+CG9o7MPb1zdsTAPB2KbLWuJArDnu9zvZD5Qa4CGenHjdmXm0x0vpBREAcyNnuSmZyZXObpWm+XYpbykM5kmlxPErmZ3E3vk3P2veXAMQeqOFZCmTuOaDheiS7F4zaOdbVODru52ZZdErWwglm1BIxNsdO0Q6uusrbgWab2JAM2EFzy+/smPrWmrHomo1nf1PTJd90tRPQwNHk1NMUqlSgI5VKORvMn6ep5qwtG+n6X5xP1/6XueONjtb9b1r9yynjJq2yusRFX/yjCYFqUGQ+aY4U9+W+b/gI24JTlAAB4nGNgYmD4//Hb7v9NDBoMDAyMDOiADSzKxMDMyMTIzJVYVJRfXpSZnlHCXpqXaWRk5ggAfYcL4gAAAAH//wACeJxjYGRgYOABYjEgZmJgBEJWIGYB8xgAA9UANHicY2BgYGQAgtsKp6pB9NOm1wUwGgBO4AfGAAA=')format("woff");}.fff{font-family:fff;line-height:0.732000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff10;src:url('data:application/font-woff;base64,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')format("woff");}.ff10{font-family:ff10;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff11;src:url('data:application/font-woff;base64,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')format("woff");}.ff11{font-family:ff11;line-height:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff12;src:url('data:application/font-woff;base64,d09GRgABAAAAAATQAA0AAAAAB0gAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEtAAAABoAAAAcpiahhkdERUYAAASYAAAAGwAAAB4AJwALT1MvMgAAAaQAAABBAAAAVlOyf6BjbWFwAAAB/AAAAEYAAAFKRGzkw2dhc3AAAASQAAAACAAAAAj//wADZ2x5ZgAAAlAAAABcAAAAcJpimDFoZWFkAAABMAAAADIAAAA2LUMap2hoZWEAAAFkAAAAHgAAACQEcwOIaG10eAAAAegAAAAUAAAAFAWFADlsb2NhAAACRAAAAAwAAAAMAAAAOG1heHAAAAGEAAAAHQAAACAASAApbmFtZQAAAqwAAAG2AAADQt/+T5Zwb3N0AAAEZAAAACkAAAA0cGzCxHicY2BkYGBgYjjyXv+sRzy/zVcGbuYXQBGGp02vW+G0JUMD01PGEiCXA6gWCACR+g1dAAB4nGNgZGBgLGEAAmZ5EMn0lCGFQZIBGbACACsPAgIAAHicY2BkYGBgZVBjANEMDExAzAhmO4D5DAAGjQByAAAAeJxjYGScwDiBgZWBgamLaQ+DIkMPiP7fw/iAwZCRCSjKwMrMAAOMQOwA4wSkuaYAKQUlG8YSsGQJXA0DACxLCh0AAAABGAAAAAAAAAFNAAAAAQAAAx8AOXicY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUlGz+/wfywfT/x3dPQNUDASMbA5zDyAQkmBhQASPEiuEMACp9CVIAAAAAAAAAAAAAAAAAOHicY2BksGRoYHrKWMKgysDAKMKmrKSmrseorMTHzA5km5qYGRuJicsxGhvZMZsD2UxP4/z0/UyMPDX4FNQVxJmYePkxBBgD/JoMDHS12UWVrNUklJE5DADJcRG5eJytUstq20AUPaPYhtDiZVZZXNpNApGQZTAkq5IQG0xkBysO2Y4S2Ra2NUFSMF70ixLyR/2XHknTQkvJqhp077nvxwyALt6h0Hz3v7FCV3212EFHfbP4AD31anELR84ni9voOr98OtR/p6dqHVJ6q6MqrHCs2hY7+KwCiw8Qq5HFLZypHxa3cex8sbiDM2eKKxg8Y48cKZZYoYQggM/Th8vT4HNqY3oJLuGRjqHxiDVjdyjIU+o0MjzVNg9h7TWp7Y1n5XFCOaszJaykscGCkqnpHXUP5HNEuMaMVDAin1JzS+mUGXFlnvd5ulyVEvh+33VJzyXey6UnY/24NrtinYrOnmTshZ5MzI7KVE5MJnGy0puFmIXcJQ8yj65nkYxm0/ltdMq8N2w4ZEMl24o45pYtGrZXcHDchKEuV9F+G5tNQbmaKqdL1T8mJt9q8mE9WlnznItM6jV6XJ3ggv9HFVyOmTDmhbJmdBMxoL5nLyCghKHJyqHJl4kEni8X8mdf7ixZvmx0TsPA7XEzweDjuf6uin/nq15wQnPBG2xurxmreh9CY5IXKffLlvy+/J+KPwGGi5NVAAB4nGNgYmD4//Hb7v8TGNQYsAFWIGZkYGJgZmRiL87MzcxJLAIAALoIXwAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9NOm160wGgBPsgfwAAA=')format("woff");}.ff12{font-family:ff12;line-height:0.244000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff13;src:url('data:application/font-woff;base64,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')format("woff");}.ff13{font-family:ff13;line-height:0.834000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
@font-face{font-family:ff14;src:url('data:application/font-woff;base64,d09GRgABAAAAAATcAA0AAAAAB0QAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEwAAAABoAAAAcpiahmkdERUYAAASkAAAAGwAAAB4AJwALT1MvMgAAAaQAAABBAAAAVlO4f7NjbWFwAAAB/AAAAEYAAAFKRGzkw2dhc3AAAAScAAAACAAAAAj//wADZ2x5ZgAAAlAAAABnAAAAbDQU7jxoZWFkAAABMAAAADMAAAA2LV4au2hoZWEAAAFkAAAAHgAAACQEkgOjaG10eAAAAegAAAAUAAAAFAWgADtsb2NhAAACRAAAAAwAAAAMAAAANm1heHAAAAGEAAAAHQAAACAASAAnbmFtZQAAArgAAAG2AAADQtz+SpZwb3N0AAAEcAAAACkAAAA0cHnCwnicY2BkYGBgYjhy4LfWsnh+m68M3MwvgCIMT5te98Npa4Yqpn+MVUAuB1AtEAAApEUN5AB4nGNgZGBgrGIAAmYrEMn0jyGFQZIBGbACADBHAjwAAHicY2BkYGBgZVBhANEMDExAzAhmO4D5DAAGWwBwAAAAeJxjYGScyziBgZWBgamLaQ+DIkMPiP7fw/iAwZCRCSjKwMrMAAOMQOwA4wSkuaYAKQUlG8YqsGQVXA0DADEqCjYAAAABGAAAAAAAAAFNAAAAAQAAAzoAO3icY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUlGz+/wfywfT/x3dPQNUDASMbA5zDyAQkmBhQASPEiuEMACp9CVIAAAAAAAAAAAAAAAAANnicY2BksGaoYvrHWMWgzMDAKMKmrKSmrseorMTHxC7CB6RNTcyMjcTE5RiNjczMgUymfwlBBsGmBr5aYnp6ckxMHGwCMAHbIGYmPgHG0OAOYyNdPQEVFz1mLh4VCC/aVp0BAKK+EmYAeJytUstq20AUPaPYhpDiZVdZXNpNApGQZTBNViUhNpjIDlZcsh0lsi1sa4KkYLzoFyXkj/ovPZKmhZaSVTXo3nPfjxkAXbxBofm+/cYKXfXZYgcd9dXiA/TUi8UtfHSOLG6j6/zy6VD/nZ6qdUjptY6qsMKxalvs4IMKLD5ArEYWt3CmfljcxrHzyeIOzpwprmDwhD1ypFhihRKCAD5PHy5Pg8+pjekluIRHOobGA9aM3aEgT6nTyPBY2zyEtdektjeelccJ5azOlLCSxgYLSqamd9Tdk88R4RozUsGIfErNLaVTZsSVedrn6XJVSuD7fdclPZd4L5eejPXD2uyKdSo6e5SxF3oyMTsqUzkxmcTJSm8WYhZyl9zLPLqeRTKaTee30Snz3rDhkA2VbCvimFu2aNhegS80hqEuV9F+G5tNQbmaKqdL1T8mJt9q8mE9WlnznItM6jV6XJ3ggv97FVyOmTDmmbJmdBMxoL5nLyCghKHJyqHJl4kEni8X8mdf7ixZPm90TsPA7XEzweD9uf6uin/nq15wQnPBG2xurxmreh9CY5IXKffLlvy+/J+KPwGAiZNNAAB4nGNgYmD4//Hb7v9zGVQYsAFWIGZkYGJgZmRiL87MzcxJLAIAApcIagAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9NOm1/0wGgBQFggEAAA=')format("woff");}.ff14{font-family:ff14;line-height:0.256000;font-style:normal;font-weight:normal;visibility:visible;}
|
||
.m0{transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);-ms-transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);-webkit-transform:matrix(0.250000,0.000000,0.000000,0.250000,0,0);}
|
||
.m1{transform:none;-ms-transform:none;-webkit-transform:none;}
|
||
.v0{vertical-align:0.000000px;}
|
||
.ls0{letter-spacing:0.000000px;}
|
||
.sc_{text-shadow:none;}
|
||
.sc0{text-shadow:-0.015em 0 transparent,0 0.015em transparent,0.015em 0 transparent,0 -0.015em transparent;}
|
||
@media screen and (-webkit-min-device-pixel-ratio:0){
|
||
.sc_{-webkit-text-stroke:0px transparent;}
|
||
.sc0{-webkit-text-stroke:0.015em transparent;text-shadow:none;}
|
||
}
|
||
.ws0{word-spacing:0.000000px;}
|
||
._4{margin-left:-7.355850px;}
|
||
._7{margin-left:-4.399514px;}
|
||
._d{margin-left:-3.307583px;}
|
||
._3{margin-left:-1.818300px;}
|
||
._c{width:1.818300px;}
|
||
._0{width:3.073600px;}
|
||
._f{width:4.458853px;}
|
||
._21{width:5.547190px;}
|
||
._29{width:6.628592px;}
|
||
._2a{width:10.589805px;}
|
||
._10{width:11.650598px;}
|
||
._b{width:13.270183px;}
|
||
._e{width:14.952398px;}
|
||
._6{width:16.116719px;}
|
||
._8{width:17.550234px;}
|
||
._11{width:19.575503px;}
|
||
._a{width:21.060222px;}
|
||
._1b{width:22.226866px;}
|
||
._1c{width:23.714704px;}
|
||
._2d{width:24.857134px;}
|
||
._18{width:25.869435px;}
|
||
._14{width:27.970932px;}
|
||
._5{width:31.241700px;}
|
||
._9{width:32.422412px;}
|
||
._13{width:33.771608px;}
|
||
._1{width:36.288314px;}
|
||
._16{width:37.658880px;}
|
||
._2{width:40.829100px;}
|
||
._1e{width:45.598186px;}
|
||
._39{width:50.211630px;}
|
||
._1d{width:55.742257px;}
|
||
._22{width:57.021463px;}
|
||
._35{width:67.713970px;}
|
||
._26{width:75.104840px;}
|
||
._19{width:94.147200px;}
|
||
._34{width:101.602835px;}
|
||
._3f{width:113.509783px;}
|
||
._15{width:149.889457px;}
|
||
._24{width:151.168663px;}
|
||
._40{width:169.348685px;}
|
||
._37{width:202.805841px;}
|
||
._36{width:204.017443px;}
|
||
._1f{width:206.256216px;}
|
||
._17{width:225.953280px;}
|
||
._3c{width:237.284567px;}
|
||
._31{width:254.054908px;}
|
||
._3d{width:271.173432px;}
|
||
._3b{width:288.101924px;}
|
||
._23{width:319.354417px;}
|
||
._32{width:335.687994px;}
|
||
._48{width:357.546440px;}
|
||
._42{width:372.154526px;}
|
||
._2c{width:470.736000px;}
|
||
._43{width:491.561387px;}
|
||
._33{width:525.038308px;}
|
||
._28{width:622.662682px;}
|
||
._30{width:694.386992px;}
|
||
._27{width:734.348160px;}
|
||
._3a{width:745.204350px;}
|
||
._2e{width:785.219755px;}
|
||
._2f{width:873.208918px;}
|
||
._38{width:878.518136px;}
|
||
._20{width:899.174502px;}
|
||
._3e{width:954.361925px;}
|
||
._25{width:1070.086042px;}
|
||
._47{width:1144.687599px;}
|
||
._1a{width:1173.474611px;}
|
||
._44{width:1200.389109px;}
|
||
._46{width:1210.009702px;}
|
||
._41{width:1266.293674px;}
|
||
._12{width:1296.662102px;}
|
||
._2b{width:1306.033869px;}
|
||
._45{width:1491.148186px;}
|
||
.fce{color:rgb(173,34,49);}
|
||
.fcd{color:rgb(171,92,31);}
|
||
.fc0{color:rgb(35,55,59);}
|
||
.fc1{color:rgb(250,250,250);}
|
||
.fc2{color:rgb(255,255,255);}
|
||
.fc6{color:rgb(102,102,102);}
|
||
.fcf{color:rgb(0,153,153);}
|
||
.fcb{color:rgb(156,102,0);}
|
||
.fc3{color:rgb(57,75,79);}
|
||
.fc4{color:rgb(0,128,0);}
|
||
.fc5{color:rgb(176,0,64);}
|
||
.fc7{color:rgb(61,122,122);}
|
||
.fc9{color:rgb(16,136,110);}
|
||
.fcc{color:transparent;}
|
||
.fc8{color:rgb(0,0,255);}
|
||
.fca{color:rgb(186,33,33);}
|
||
.fs5{font-size:31.880400px;}
|
||
.fs7{font-size:35.865600px;}
|
||
.fs3{font-size:39.850400px;}
|
||
.fs6{font-size:43.636400px;}
|
||
.fs2{font-size:47.820800px;}
|
||
.fs4{font-size:57.384800px;}
|
||
.fs1{font-size:82.650000px;}
|
||
.fs0{font-size:99.148400px;}
|
||
.y222{bottom:-6.060000px;}
|
||
.y0{bottom:-0.500000px;}
|
||
.y1b1{bottom:1.698000px;}
|
||
.y217{bottom:2.358000px;}
|
||
.y6f{bottom:2.779000px;}
|
||
.y185{bottom:3.848000px;}
|
||
.ycf{bottom:4.751000px;}
|
||
.y1ed{bottom:4.824000px;}
|
||
.y1b9{bottom:5.899000px;}
|
||
.yaa{bottom:6.370000px;}
|
||
.y2d{bottom:6.612000px;}
|
||
.y23d{bottom:6.767000px;}
|
||
.y52{bottom:7.494000px;}
|
||
.y7e{bottom:7.518000px;}
|
||
.y16b{bottom:7.678000px;}
|
||
.yc3{bottom:9.595000px;}
|
||
.y1cb{bottom:9.805000px;}
|
||
.y232{bottom:11.743000px;}
|
||
.y11d{bottom:11.922000px;}
|
||
.y1b0{bottom:12.582000px;}
|
||
.yc{bottom:13.018000px;}
|
||
.y216{bottom:13.242000px;}
|
||
.y151{bottom:13.915000px;}
|
||
.y184{bottom:14.732000px;}
|
||
.y221{bottom:15.642000px;}
|
||
.y19d{bottom:15.708000px;}
|
||
.yf2{bottom:15.977000px;}
|
||
.y3a{bottom:16.434000px;}
|
||
.y97{bottom:16.714000px;}
|
||
.yce{bottom:17.354000px;}
|
||
.ya0{bottom:17.511000px;}
|
||
.y203{bottom:17.930000px;}
|
||
.y2c{bottom:18.218000px;}
|
||
.y13c{bottom:19.277000px;}
|
||
.y23c{bottom:19.369000px;}
|
||
.y134{bottom:19.775000px;}
|
||
.yc2{bottom:20.479000px;}
|
||
.y1ca{bottom:20.689000px;}
|
||
.y23b{bottom:22.607000px;}
|
||
.y231{bottom:22.627000px;}
|
||
.y46{bottom:23.095000px;}
|
||
.y1af{bottom:23.466000px;}
|
||
.y19f{bottom:23.539000px;}
|
||
.y215{bottom:24.126000px;}
|
||
.y11c{bottom:24.525000px;}
|
||
.yb4{bottom:25.386000px;}
|
||
.y183{bottom:25.616000px;}
|
||
.y114{bottom:25.715000px;}
|
||
.y150{bottom:26.517000px;}
|
||
.y19c{bottom:26.592000px;}
|
||
.y18d{bottom:26.651000px;}
|
||
.y144{bottom:27.563000px;}
|
||
.y202{bottom:28.814000px;}
|
||
.ya9{bottom:29.222000px;}
|
||
.y2b{bottom:29.825000px;}
|
||
.ycd{bottom:29.957000px;}
|
||
.y16{bottom:30.313000px;}
|
||
.y96{bottom:30.462000px;}
|
||
.yc1{bottom:31.363000px;}
|
||
.y133{bottom:31.382000px;}
|
||
.yf1{bottom:31.558000px;}
|
||
.y1c9{bottom:31.574000px;}
|
||
.y13b{bottom:31.880000px;}
|
||
.ye7{bottom:31.972000px;}
|
||
.y39{bottom:32.016000px;}
|
||
.y220{bottom:32.220000px;}
|
||
.y230{bottom:33.511000px;}
|
||
.y1ae{bottom:34.350000px;}
|
||
.y214{bottom:35.011000px;}
|
||
.y1f{bottom:35.478000px;}
|
||
.y1f6{bottom:35.680000px;}
|
||
.y51{bottom:35.718000px;}
|
||
.y19e{bottom:36.141000px;}
|
||
.y23a{bottom:36.355000px;}
|
||
.y182{bottom:36.500000px;}
|
||
.y5c{bottom:36.716000px;}
|
||
.y11b{bottom:37.128000px;}
|
||
.y106{bottom:37.152000px;}
|
||
.y64{bottom:37.181000px;}
|
||
.y1e9{bottom:37.437000px;}
|
||
.y19b{bottom:37.476000px;}
|
||
.yb3{bottom:37.989000px;}
|
||
.y45{bottom:38.677000px;}
|
||
.y6e{bottom:39.065000px;}
|
||
.y14f{bottom:39.120000px;}
|
||
.y201{bottom:39.698000px;}
|
||
.y9f{bottom:40.066000px;}
|
||
.y143{bottom:40.166000px;}
|
||
.y86{bottom:40.648000px;}
|
||
.y1de{bottom:40.774000px;}
|
||
.y18c{bottom:42.232000px;}
|
||
.yc0{bottom:42.248000px;}
|
||
.y2a{bottom:42.427000px;}
|
||
.y1c8{bottom:42.458000px;}
|
||
.ycc{bottom:42.559000px;}
|
||
.y132{bottom:42.988000px;}
|
||
.y13a{bottom:43.486000px;}
|
||
.y173{bottom:43.490000px;}
|
||
.y95{bottom:44.211000px;}
|
||
.y22f{bottom:44.395000px;}
|
||
.ye6{bottom:44.575000px;}
|
||
.y1ad{bottom:45.235000px;}
|
||
.y1b8{bottom:45.580000px;}
|
||
.y213{bottom:45.895000px;}
|
||
.yf0{bottom:47.140000px;}
|
||
.y15b{bottom:47.311000px;}
|
||
.y181{bottom:47.384000px;}
|
||
.y1ec{bottom:48.360000px;}
|
||
.y113{bottom:48.744000px;}
|
||
.y21f{bottom:48.798000px;}
|
||
.y15{bottom:49.516000px;}
|
||
.y8d{bottom:49.619000px;}
|
||
.y11a{bottom:49.730000px;}
|
||
.y105{bottom:49.755000px;}
|
||
.y1d3{bottom:49.957000px;}
|
||
.y200{bottom:50.582000px;}
|
||
.yb2{bottom:50.592000px;}
|
||
.y50{bottom:51.299000px;}
|
||
.y239{bottom:51.511000px;}
|
||
.y14e{bottom:51.723000px;}
|
||
.y142{bottom:52.769000px;}
|
||
.y6d{bottom:52.813000px;}
|
||
.ybf{bottom:53.132000px;}
|
||
.y1c7{bottom:53.342000px;}
|
||
.y1dd{bottom:53.376000px;}
|
||
.yda{bottom:53.972000px;}
|
||
.y29{bottom:54.034000px;}
|
||
.y5{bottom:54.070000px;}
|
||
.y164{bottom:54.215000px;}
|
||
.y63{bottom:54.334000px;}
|
||
.y38{bottom:54.571000px;}
|
||
.y131{bottom:54.594000px;}
|
||
.y1e{bottom:54.681000px;}
|
||
.ycb{bottom:55.162000px;}
|
||
.y16a{bottom:55.199000px;}
|
||
.y22e{bottom:55.279000px;}
|
||
.y9e{bottom:55.648000px;}
|
||
.y139{bottom:56.089000px;}
|
||
.y1ac{bottom:56.119000px;}
|
||
.y1f5{bottom:56.711000px;}
|
||
.ya8{bottom:56.758000px;}
|
||
.y212{bottom:56.779000px;}
|
||
.ye5{bottom:57.177000px;}
|
||
.yfc{bottom:58.783000px;}
|
||
.y172{bottom:59.072000px;}
|
||
.y85{bottom:59.219000px;}
|
||
.y19a{bottom:59.245000px;}
|
||
.y94{bottom:59.927000px;}
|
||
.y1e8{bottom:60.211000px;}
|
||
.y15a{bottom:61.060000px;}
|
||
.y1b7{bottom:61.161000px;}
|
||
.y112{bottom:61.347000px;}
|
||
.y12c{bottom:61.718000px;}
|
||
.y5b{bottom:62.011000px;}
|
||
.y119{bottom:62.333000px;}
|
||
.y104{bottom:62.358000px;}
|
||
.yb1{bottom:63.194000px;}
|
||
.y76{bottom:63.330000px;}
|
||
.ybe{bottom:64.016000px;}
|
||
.y44{bottom:64.221000px;}
|
||
.y14d{bottom:64.325000px;}
|
||
.y21e{bottom:64.379000px;}
|
||
.yef{bottom:64.714000px;}
|
||
.y18b{bottom:65.159000px;}
|
||
.y141{bottom:65.371000px;}
|
||
.y6c{bottom:65.416000px;}
|
||
.y1dc{bottom:65.979000px;}
|
||
.y22d{bottom:66.163000px;}
|
||
.y130{bottom:66.201000px;}
|
||
.y238{bottom:66.231000px;}
|
||
.yd9{bottom:66.574000px;}
|
||
.y4f{bottom:66.881000px;}
|
||
.y37{bottom:66.924000px;}
|
||
.y1ab{bottom:67.003000px;}
|
||
.y211{bottom:67.663000px;}
|
||
.y138{bottom:67.695000px;}
|
||
.yca{bottom:67.765000px;}
|
||
.y163{bottom:67.963000px;}
|
||
.y14{bottom:68.719000px;}
|
||
.y180{bottom:69.152000px;}
|
||
.ye4{bottom:69.780000px;}
|
||
.y199{bottom:70.129000px;}
|
||
.y4{bottom:70.745000px;}
|
||
.y169{bottom:70.781000px;}
|
||
.yfb{bottom:71.386000px;}
|
||
.ya7{bottom:72.340000px;}
|
||
.y1ff{bottom:72.350000px;}
|
||
.y1d2{bottom:72.512000px;}
|
||
.y8c{bottom:73.171000px;}
|
||
.y1d{bottom:73.884000px;}
|
||
.y111{bottom:73.949000px;}
|
||
.y159{bottom:74.808000px;}
|
||
.ybd{bottom:74.900000px;}
|
||
.y103{bottom:74.960000px;}
|
||
.y1c6{bottom:75.110000px;}
|
||
.yb0{bottom:75.797000px;}
|
||
.y1b6{bottom:76.743000px;}
|
||
.y43{bottom:76.823000px;}
|
||
.y22c{bottom:77.048000px;}
|
||
.yb{bottom:77.117000px;}
|
||
.y1f4{bottom:77.742000px;}
|
||
.y1aa{bottom:77.887000px;}
|
||
.y140{bottom:77.974000px;}
|
||
.y6b{bottom:78.019000px;}
|
||
.y9d{bottom:78.203000px;}
|
||
.y210{bottom:78.547000px;}
|
||
.y1db{bottom:78.582000px;}
|
||
.y12f{bottom:78.803000px;}
|
||
.yd8{bottom:79.177000px;}
|
||
.y5a{bottom:79.595000px;}
|
||
.y17f{bottom:80.036000px;}
|
||
.yc9{bottom:80.118000px;}
|
||
.y137{bottom:80.298000px;}
|
||
.y21d{bottom:80.932000px;}
|
||
.y198{bottom:81.013000px;}
|
||
.y28{bottom:81.281000px;}
|
||
.y36{bottom:81.520000px;}
|
||
.y162{bottom:81.712000px;}
|
||
.y1e7{bottom:81.745000px;}
|
||
.y62{bottom:81.870000px;}
|
||
.ye3{bottom:82.383000px;}
|
||
.y1fe{bottom:83.234000px;}
|
||
.y84{bottom:83.244000px;}
|
||
.yfa{bottom:83.989000px;}
|
||
.y75{bottom:84.890000px;}
|
||
.ybc{bottom:85.784000px;}
|
||
.y1c5{bottom:85.994000px;}
|
||
.y110{bottom:86.552000px;}
|
||
.y93{bottom:86.940000px;}
|
||
.y118{bottom:87.538000px;}
|
||
.y102{bottom:87.563000px;}
|
||
.yee{bottom:87.742000px;}
|
||
.y237{bottom:87.765000px;}
|
||
.y13{bottom:87.921000px;}
|
||
.y22b{bottom:87.932000px;}
|
||
.y1d1{bottom:88.093000px;}
|
||
.yaf{bottom:88.400000px;}
|
||
.y4e{bottom:88.440000px;}
|
||
.y158{bottom:88.557000px;}
|
||
.y1a9{bottom:88.771000px;}
|
||
.y42{bottom:89.426000px;}
|
||
.y20f{bottom:89.431000px;}
|
||
.y14c{bottom:89.531000px;}
|
||
.y12e{bottom:90.410000px;}
|
||
.y6a{bottom:90.621000px;}
|
||
.y18a{bottom:90.703000px;}
|
||
.y17e{bottom:90.921000px;}
|
||
.yd7{bottom:91.780000px;}
|
||
.y1eb{bottom:91.897000px;}
|
||
.y136{bottom:91.904000px;}
|
||
.y1e6{bottom:92.629000px;}
|
||
.y1c{bottom:93.086000px;}
|
||
.y9c{bottom:93.785000px;}
|
||
.y1fd{bottom:94.118000px;}
|
||
.y171{bottom:94.578000px;}
|
||
.y170{bottom:94.579000px;}
|
||
.ye2{bottom:94.985000px;}
|
||
.ya{bottom:96.320000px;}
|
||
.yf9{bottom:96.591000px;}
|
||
.ybb{bottom:96.668000px;}
|
||
.y8b{bottom:96.723000px;}
|
||
.y1c4{bottom:96.878000px;}
|
||
.y27{bottom:97.022000px;}
|
||
.y168{bottom:97.296000px;}
|
||
.y161{bottom:97.453000px;}
|
||
.y1f3{bottom:97.856000px;}
|
||
.y22a{bottom:98.816000px;}
|
||
.y10f{bottom:99.155000px;}
|
||
.y1a8{bottom:99.655000px;}
|
||
.y1b5{bottom:99.669000px;}
|
||
.ya6{bottom:99.877000px;}
|
||
.y117{bottom:99.892000px;}
|
||
.y101{bottom:100.165000px;}
|
||
.y20e{bottom:100.315000px;}
|
||
.yed{bottom:100.345000px;}
|
||
.yae{bottom:101.002000px;}
|
||
.y17d{bottom:101.805000px;}
|
||
.y21c{bottom:101.968000px;}
|
||
.y41{bottom:102.029000px;}
|
||
.y14b{bottom:102.133000px;}
|
||
.y157{bottom:102.305000px;}
|
||
.y92{bottom:102.522000px;}
|
||
.yc8{bottom:102.776000px;}
|
||
.y197{bottom:102.781000px;}
|
||
.y13f{bottom:102.930000px;}
|
||
.y69{bottom:102.975000px;}
|
||
.y12d{bottom:103.013000px;}
|
||
.y135{bottom:103.511000px;}
|
||
.y1e5{bottom:103.513000px;}
|
||
.y1da{bottom:103.787000px;}
|
||
.y236{bottom:103.815000px;}
|
||
.y4d{bottom:104.021000px;}
|
||
.y35{bottom:104.075000px;}
|
||
.yd6{bottom:104.382000px;}
|
||
.y1fc{bottom:105.003000px;}
|
||
.y59{bottom:105.139000px;}
|
||
.y74{bottom:106.449000px;}
|
||
.y127{bottom:106.798000px;}
|
||
.y12{bottom:107.124000px;}
|
||
.yba{bottom:107.552000px;}
|
||
.ye1{bottom:107.588000px;}
|
||
.y1c3{bottom:107.762000px;}
|
||
.yf8{bottom:109.194000px;}
|
||
.y61{bottom:109.407000px;}
|
||
.y229{bottom:109.700000px;}
|
||
.y1a7{bottom:110.539000px;}
|
||
.y20d{bottom:111.199000px;}
|
||
.y10e{bottom:111.757000px;}
|
||
.y1d0{bottom:112.041000px;}
|
||
.y1b{bottom:112.289000px;}
|
||
.y17c{bottom:112.689000px;}
|
||
.y26{bottom:112.763000px;}
|
||
.y100{bottom:112.768000px;}
|
||
.y167{bottom:112.878000px;}
|
||
.yec{bottom:112.948000px;}
|
||
.y1ea{bottom:113.665000px;}
|
||
.y7d{bottom:114.362000px;}
|
||
.y1e4{bottom:114.397000px;}
|
||
.y40{bottom:114.631000px;}
|
||
.ya5{bottom:115.458000px;}
|
||
.y9{bottom:115.523000px;}
|
||
.y1fb{bottom:115.887000px;}
|
||
.y189{bottom:116.247000px;}
|
||
.y9b{bottom:116.340000px;}
|
||
.y1d9{bottom:116.390000px;}
|
||
.y4c{bottom:116.624000px;}
|
||
.y34{bottom:116.678000px;}
|
||
.yd5{bottom:116.985000px;}
|
||
.y58{bottom:117.742000px;}
|
||
.y156{bottom:118.046000px;}
|
||
.yb9{bottom:118.436000px;}
|
||
.y235{bottom:118.534000px;}
|
||
.y68{bottom:118.566000px;}
|
||
.y126{bottom:119.401000px;}
|
||
.y1f2{bottom:119.803000px;}
|
||
.y83{bottom:119.861000px;}
|
||
.y116{bottom:120.191000px;}
|
||
.y8a{bottom:120.274000px;}
|
||
.y228{bottom:120.584000px;}
|
||
.y1a6{bottom:121.423000px;}
|
||
.yf7{bottom:121.797000px;}
|
||
.y20c{bottom:122.083000px;}
|
||
.y1b4{bottom:122.225000px;}
|
||
.y21b{bottom:123.502000px;}
|
||
.y91{bottom:123.558000px;}
|
||
.y17b{bottom:123.573000px;}
|
||
.yc7{bottom:123.812000px;}
|
||
.y10d{bottom:124.360000px;}
|
||
.y196{bottom:124.549000px;}
|
||
.y60{bottom:124.988000px;}
|
||
.yff{bottom:125.371000px;}
|
||
.yeb{bottom:125.550000px;}
|
||
.yad{bottom:125.959000px;}
|
||
.y11{bottom:126.327000px;}
|
||
.y1fa{bottom:126.771000px;}
|
||
.y7c{bottom:126.965000px;}
|
||
.y160{bottom:126.982000px;}
|
||
.y3f{bottom:126.985000px;}
|
||
.y14a{bottom:127.339000px;}
|
||
.y73{bottom:128.008000px;}
|
||
.y3{bottom:128.144000px;}
|
||
.y166{bottom:128.459000px;}
|
||
.y25{bottom:128.479000px;}
|
||
.y4b{bottom:128.977000px;}
|
||
.y33{bottom:129.031000px;}
|
||
.yb8{bottom:129.320000px;}
|
||
.y1c2{bottom:129.531000px;}
|
||
.yd4{bottom:129.587000px;}
|
||
.y16f{bottom:130.085000px;}
|
||
.y57{bottom:130.345000px;}
|
||
.y125{bottom:131.007000px;}
|
||
.y227{bottom:131.468000px;}
|
||
.y188{bottom:131.828000px;}
|
||
.y9a{bottom:131.921000px;}
|
||
.y1a5{bottom:132.307000px;}
|
||
.ye0{bottom:132.793000px;}
|
||
.y20b{bottom:132.968000px;}
|
||
.y13e{bottom:133.441000px;}
|
||
.y1f1{bottom:133.551000px;}
|
||
.yf6{bottom:134.150000px;}
|
||
.y17a{bottom:134.457000px;}
|
||
.y1cf{bottom:134.596000px;}
|
||
.y8{bottom:134.725000px;}
|
||
.y195{bottom:135.433000px;}
|
||
.y82{bottom:135.443000px;}
|
||
.y12b{bottom:135.490000px;}
|
||
.y1e3{bottom:136.166000px;}
|
||
.y10c{bottom:136.963000px;}
|
||
.y1f9{bottom:137.655000px;}
|
||
.y1b3{bottom:137.806000px;}
|
||
.yfe{bottom:137.973000px;}
|
||
.yea{bottom:138.153000px;}
|
||
.y20{bottom:138.248000px;}
|
||
.y90{bottom:139.139000px;}
|
||
.yc6{bottom:139.393000px;}
|
||
.y7b{bottom:139.568000px;}
|
||
.y149{bottom:139.941000px;}
|
||
.yb7{bottom:140.205000px;}
|
||
.y21a{bottom:140.414000px;}
|
||
.y1c1{bottom:140.415000px;}
|
||
.y234{bottom:140.531000px;}
|
||
.y15f{bottom:140.730000px;}
|
||
.y3e{bottom:141.580000px;}
|
||
.y1d8{bottom:141.595000px;}
|
||
.y109{bottom:141.941000px;}
|
||
.yd3{bottom:142.190000px;}
|
||
.y226{bottom:142.352000px;}
|
||
.y56{bottom:142.698000px;}
|
||
.y1a{bottom:142.940000px;}
|
||
.y1a4{bottom:142.942000px;}
|
||
.ya4{bottom:142.995000px;}
|
||
.y72{bottom:143.589000px;}
|
||
.y124{bottom:143.610000px;}
|
||
.y32{bottom:143.626000px;}
|
||
.y89{bottom:143.826000px;}
|
||
.y20a{bottom:143.852000px;}
|
||
.y4a{bottom:144.569000px;}
|
||
.y165{bottom:145.012000px;}
|
||
.y179{bottom:145.341000px;}
|
||
.ydf{bottom:145.396000px;}
|
||
.y10{bottom:145.530000px;}
|
||
.y16e{bottom:145.667000px;}
|
||
.y194{bottom:146.317000px;}
|
||
.y1e2{bottom:147.050000px;}
|
||
.y12a{bottom:147.097000px;}
|
||
.y155{bottom:147.575000px;}
|
||
.y1f8{bottom:148.539000px;}
|
||
.y13d{bottom:149.022000px;}
|
||
.y10b{bottom:149.565000px;}
|
||
.y67{bottom:150.088000px;}
|
||
.y1ce{bottom:150.178000px;}
|
||
.yfd{bottom:150.327000px;}
|
||
.ye9{bottom:150.507000px;}
|
||
.yb6{bottom:151.089000px;}
|
||
.y1c0{bottom:151.299000px;}
|
||
.yac{bottom:151.488000px;}
|
||
.y7a{bottom:152.170000px;}
|
||
.y1f0{bottom:152.281000px;}
|
||
.y5f{bottom:152.525000px;}
|
||
.y148{bottom:152.544000px;}
|
||
.y11f{bottom:153.224000px;}
|
||
.y225{bottom:153.236000px;}
|
||
.y7{bottom:153.928000px;}
|
||
.y1d7{bottom:154.198000px;}
|
||
.y99{bottom:154.477000px;}
|
||
.y15e{bottom:154.478000px;}
|
||
.yd2{bottom:154.544000px;}
|
||
.y209{bottom:154.736000px;}
|
||
.y219{bottom:155.996000px;}
|
||
.y233{bottom:156.112000px;}
|
||
.yf5{bottom:156.193000px;}
|
||
.y123{bottom:156.213000px;}
|
||
.y178{bottom:156.225000px;}
|
||
.y81{bottom:156.479000px;}
|
||
.y193{bottom:157.202000px;}
|
||
.y1e1{bottom:157.934000px;}
|
||
.yde{bottom:157.999000px;}
|
||
.ya3{bottom:158.576000px;}
|
||
.y129{bottom:158.703000px;}
|
||
.y187{bottom:158.765000px;}
|
||
.y1f7{bottom:159.174000px;}
|
||
.y24{bottom:159.976000px;}
|
||
.y55{bottom:160.282000px;}
|
||
.yc5{bottom:160.429000px;}
|
||
.y154{bottom:161.323000px;}
|
||
.y1b2{bottom:161.754000px;}
|
||
.y19{bottom:162.143000px;}
|
||
.y8f{bottom:162.168000px;}
|
||
.y1bf{bottom:162.183000px;}
|
||
.y1a3{bottom:162.215000px;}
|
||
.y66{bottom:163.837000px;}
|
||
.y108{bottom:163.983000px;}
|
||
.y224{bottom:164.120000px;}
|
||
.yf{bottom:164.733000px;}
|
||
.y79{bottom:164.773000px;}
|
||
.y147{bottom:165.147000px;}
|
||
.y208{bottom:165.620000px;}
|
||
.y1ef{bottom:166.029000px;}
|
||
.y2{bottom:166.047000px;}
|
||
.y49{bottom:166.128000px;}
|
||
.y31{bottom:166.182000px;}
|
||
.y1d6{bottom:166.800000px;}
|
||
.y177{bottom:167.109000px;}
|
||
.y3d{bottom:167.124000px;}
|
||
.y88{bottom:167.377000px;}
|
||
.y71{bottom:167.614000px;}
|
||
.y122{bottom:167.819000px;}
|
||
.y192{bottom:168.086000px;}
|
||
.y5e{bottom:168.107000px;}
|
||
.y15d{bottom:168.227000px;}
|
||
.y98{bottom:170.058000px;}
|
||
.y128{bottom:170.310000px;}
|
||
.ye8{bottom:170.556000px;}
|
||
.ydd{bottom:170.601000px;}
|
||
.yf4{bottom:171.774000px;}
|
||
.y80{bottom:172.060000px;}
|
||
.y218{bottom:172.549000px;}
|
||
.yb5{bottom:172.608000px;}
|
||
.y1be{bottom:173.067000px;}
|
||
.y223{bottom:174.756000px;}
|
||
.y10a{bottom:174.770000px;}
|
||
.y153{bottom:175.072000px;}
|
||
.y1cd{bottom:175.533000px;}
|
||
.y23{bottom:175.717000px;}
|
||
.yc4{bottom:176.011000px;}
|
||
.y207{bottom:176.504000px;}
|
||
.yd1{bottom:176.586000px;}
|
||
.y1a2{bottom:177.371000px;}
|
||
.y78{bottom:177.376000px;}
|
||
.y65{bottom:177.585000px;}
|
||
.y176{bottom:177.744000px;}
|
||
.y48{bottom:178.731000px;}
|
||
.y30{bottom:178.784000px;}
|
||
.y191{bottom:178.970000px;}
|
||
.y1d5{bottom:179.403000px;}
|
||
.y121{bottom:179.425000px;}
|
||
.y107{bottom:179.565000px;}
|
||
.y1e0{bottom:179.702000px;}
|
||
.y3c{bottom:179.727000px;}
|
||
.y16d{bottom:181.174000px;}
|
||
.y18{bottom:181.346000px;}
|
||
.y70{bottom:183.195000px;}
|
||
.ydc{bottom:183.204000px;}
|
||
.ye{bottom:183.936000px;}
|
||
.y1bd{bottom:183.951000px;}
|
||
.y186{bottom:184.309000px;}
|
||
.y54{bottom:185.826000px;}
|
||
.y15c{bottom:185.846000px;}
|
||
.ya2{bottom:186.113000px;}
|
||
.y1{bottom:186.670000px;}
|
||
.y1ee{bottom:187.060000px;}
|
||
.y8e{bottom:187.124000px;}
|
||
.yf3{bottom:187.356000px;}
|
||
.y206{bottom:187.388000px;}
|
||
.y7f{bottom:187.642000px;}
|
||
.yab{bottom:188.628000px;}
|
||
.y77{bottom:189.729000px;}
|
||
.y190{bottom:189.854000px;}
|
||
.y146{bottom:190.103000px;}
|
||
.y1df{bottom:190.337000px;}
|
||
.y152{bottom:190.813000px;}
|
||
.y87{bottom:190.929000px;}
|
||
.y120{bottom:191.032000px;}
|
||
.y47{bottom:191.084000px;}
|
||
.y2f{bottom:191.138000px;}
|
||
.y22{bottom:191.458000px;}
|
||
.y5d{bottom:191.592000px;}
|
||
.y3b{bottom:192.081000px;}
|
||
.yd0{bottom:192.168000px;}
|
||
.y175{bottom:194.581000px;}
|
||
.y1bc{bottom:194.835000px;}
|
||
.y115{bottom:195.807000px;}
|
||
.y1cc{bottom:196.569000px;}
|
||
.y1a1{bottom:196.574000px;}
|
||
.y16c{bottom:196.755000px;}
|
||
.y205{bottom:198.023000px;}
|
||
.y17{bottom:200.549000px;}
|
||
.y18f{bottom:200.738000px;}
|
||
.y53{bottom:201.408000px;}
|
||
.ya1{bottom:201.694000px;}
|
||
.yd{bottom:203.139000px;}
|
||
.y1d4{bottom:204.359000px;}
|
||
.y1bb{bottom:205.719000px;}
|
||
.y2e{bottom:206.676000px;}
|
||
.y21{bottom:207.174000px;}
|
||
.y11e{bottom:207.922000px;}
|
||
.ydb{bottom:208.160000px;}
|
||
.y145{bottom:210.153000px;}
|
||
.y174{bottom:210.163000px;}
|
||
.y18e{bottom:211.373000px;}
|
||
.y204{bottom:211.871000px;}
|
||
.y1a0{bottom:212.155000px;}
|
||
.y1ba{bottom:216.354000px;}
|
||
.y6{bottom:236.149000px;}
|
||
.he{height:22.124998px;}
|
||
.h8{height:23.910300px;}
|
||
.hc{height:24.890726px;}
|
||
.hb{height:26.899200px;}
|
||
.h9{height:27.576477px;}
|
||
.h5{height:29.887800px;}
|
||
.hd{height:30.283662px;}
|
||
.ha{height:32.727300px;}
|
||
.h4{height:33.187635px;}
|
||
.h6{height:35.865600px;}
|
||
.h7{height:43.038600px;}
|
||
.h3{height:59.177400px;}
|
||
.h2{height:74.361300px;}
|
||
.h0{height:255.118000px;}
|
||
.h1{height:255.500000px;}
|
||
.w0{width:453.543000px;}
|
||
.w1{width:454.000000px;}
|
||
.x0{left:0.000000px;}
|
||
.x4{left:10.667000px;}
|
||
.x1b{left:15.283000px;}
|
||
.x1{left:28.346000px;}
|
||
.x11{left:31.313000px;}
|
||
.x21{left:32.730000px;}
|
||
.x5{left:34.488000px;}
|
||
.xc{left:35.719000px;}
|
||
.x9{left:36.961000px;}
|
||
.x10{left:39.204000px;}
|
||
.x1c{left:40.658000px;}
|
||
.x17{left:42.468000px;}
|
||
.x16{left:45.283000px;}
|
||
.x14{left:47.176000px;}
|
||
.x6{left:50.486000px;}
|
||
.xd{left:53.153000px;}
|
||
.xe{left:59.579000px;}
|
||
.x18{left:61.298000px;}
|
||
.xb{left:62.892000px;}
|
||
.x12{left:63.994000px;}
|
||
.x15{left:66.005000px;}
|
||
.xa{left:68.994000px;}
|
||
.x1f{left:71.983000px;}
|
||
.x13{left:75.449000px;}
|
||
.x22{left:79.156000px;}
|
||
.x19{left:84.835000px;}
|
||
.x2{left:105.004000px;}
|
||
.x8{left:106.772000px;}
|
||
.x23{left:113.029000px;}
|
||
.x1a{left:126.459000px;}
|
||
.x20{left:163.838000px;}
|
||
.x24{left:164.859000px;}
|
||
.x1d{left:251.038000px;}
|
||
.x1e{left:263.660000px;}
|
||
.x3{left:378.705000px;}
|
||
.xf{left:424.403000px;}
|
||
.x7{left:428.637000px;}
|
||
@media print{
|
||
.v0{vertical-align:0.000000pt;}
|
||
.ls0{letter-spacing:0.000000pt;}
|
||
.ws0{word-spacing:0.000000pt;}
|
||
._4{margin-left:-9.807800pt;}
|
||
._7{margin-left:-5.866018pt;}
|
||
._d{margin-left:-4.410111pt;}
|
||
._3{margin-left:-2.424400pt;}
|
||
._c{width:2.424400pt;}
|
||
._0{width:4.098134pt;}
|
||
._f{width:5.945137pt;}
|
||
._21{width:7.396253pt;}
|
||
._29{width:8.838123pt;}
|
||
._2a{width:14.119740pt;}
|
||
._10{width:15.534131pt;}
|
||
._b{width:17.693578pt;}
|
||
._e{width:19.936530pt;}
|
||
._6{width:21.488959pt;}
|
||
._8{width:23.400311pt;}
|
||
._11{width:26.100671pt;}
|
||
._a{width:28.080295pt;}
|
||
._1b{width:29.635821pt;}
|
||
._1c{width:31.619605pt;}
|
||
._2d{width:33.142846pt;}
|
||
._18{width:34.492579pt;}
|
||
._14{width:37.294577pt;}
|
||
._5{width:41.655600pt;}
|
||
._9{width:43.229883pt;}
|
||
._13{width:45.028811pt;}
|
||
._1{width:48.384419pt;}
|
||
._16{width:50.211840pt;}
|
||
._2{width:54.438800pt;}
|
||
._1e{width:60.797582pt;}
|
||
._39{width:66.948840pt;}
|
||
._1d{width:74.323009pt;}
|
||
._22{width:76.028618pt;}
|
||
._35{width:90.285293pt;}
|
||
._26{width:100.139787pt;}
|
||
._19{width:125.529600pt;}
|
||
._34{width:135.470446pt;}
|
||
._3f{width:151.346378pt;}
|
||
._15{width:199.852609pt;}
|
||
._24{width:201.558218pt;}
|
||
._40{width:225.798246pt;}
|
||
._37{width:270.407788pt;}
|
||
._36{width:272.023257pt;}
|
||
._1f{width:275.008288pt;}
|
||
._17{width:301.271040pt;}
|
||
._3c{width:316.379422pt;}
|
||
._31{width:338.739877pt;}
|
||
._3d{width:361.564576pt;}
|
||
._3b{width:384.135899pt;}
|
||
._23{width:425.805889pt;}
|
||
._32{width:447.583991pt;}
|
||
._48{width:476.728587pt;}
|
||
._42{width:496.206034pt;}
|
||
._2c{width:627.648000pt;}
|
||
._43{width:655.415182pt;}
|
||
._33{width:700.051077pt;}
|
||
._28{width:830.216909pt;}
|
||
._30{width:925.849323pt;}
|
||
._27{width:979.130880pt;}
|
||
._3a{width:993.605800pt;}
|
||
._2e{width:1046.959674pt;}
|
||
._2f{width:1164.278557pt;}
|
||
._38{width:1171.357515pt;}
|
||
._20{width:1198.899337pt;}
|
||
._3e{width:1272.482566pt;}
|
||
._25{width:1426.781389pt;}
|
||
._47{width:1526.250132pt;}
|
||
._1a{width:1564.632815pt;}
|
||
._44{width:1600.518812pt;}
|
||
._46{width:1613.346270pt;}
|
||
._41{width:1688.391566pt;}
|
||
._12{width:1728.882802pt;}
|
||
._2b{width:1741.378492pt;}
|
||
._45{width:1988.197581pt;}
|
||
.fs5{font-size:42.507200pt;}
|
||
.fs7{font-size:47.820800pt;}
|
||
.fs3{font-size:53.133867pt;}
|
||
.fs6{font-size:58.181867pt;}
|
||
.fs2{font-size:63.761067pt;}
|
||
.fs4{font-size:76.513067pt;}
|
||
.fs1{font-size:110.200000pt;}
|
||
.fs0{font-size:132.197867pt;}
|
||
.y222{bottom:-8.080000pt;}
|
||
.y0{bottom:-0.666667pt;}
|
||
.y1b1{bottom:2.264000pt;}
|
||
.y217{bottom:3.144000pt;}
|
||
.y6f{bottom:3.705333pt;}
|
||
.y185{bottom:5.130667pt;}
|
||
.ycf{bottom:6.334667pt;}
|
||
.y1ed{bottom:6.432000pt;}
|
||
.y1b9{bottom:7.865333pt;}
|
||
.yaa{bottom:8.493333pt;}
|
||
.y2d{bottom:8.816000pt;}
|
||
.y23d{bottom:9.022667pt;}
|
||
.y52{bottom:9.992000pt;}
|
||
.y7e{bottom:10.024000pt;}
|
||
.y16b{bottom:10.237333pt;}
|
||
.yc3{bottom:12.793333pt;}
|
||
.y1cb{bottom:13.073333pt;}
|
||
.y232{bottom:15.657333pt;}
|
||
.y11d{bottom:15.896000pt;}
|
||
.y1b0{bottom:16.776000pt;}
|
||
.yc{bottom:17.357333pt;}
|
||
.y216{bottom:17.656000pt;}
|
||
.y151{bottom:18.553333pt;}
|
||
.y184{bottom:19.642667pt;}
|
||
.y221{bottom:20.856000pt;}
|
||
.y19d{bottom:20.944000pt;}
|
||
.yf2{bottom:21.302667pt;}
|
||
.y3a{bottom:21.912000pt;}
|
||
.y97{bottom:22.285333pt;}
|
||
.yce{bottom:23.138667pt;}
|
||
.ya0{bottom:23.348000pt;}
|
||
.y203{bottom:23.906667pt;}
|
||
.y2c{bottom:24.290667pt;}
|
||
.y13c{bottom:25.702667pt;}
|
||
.y23c{bottom:25.825333pt;}
|
||
.y134{bottom:26.366667pt;}
|
||
.yc2{bottom:27.305333pt;}
|
||
.y1ca{bottom:27.585333pt;}
|
||
.y23b{bottom:30.142667pt;}
|
||
.y231{bottom:30.169333pt;}
|
||
.y46{bottom:30.793333pt;}
|
||
.y1af{bottom:31.288000pt;}
|
||
.y19f{bottom:31.385333pt;}
|
||
.y215{bottom:32.168000pt;}
|
||
.y11c{bottom:32.700000pt;}
|
||
.yb4{bottom:33.848000pt;}
|
||
.y183{bottom:34.154667pt;}
|
||
.y114{bottom:34.286667pt;}
|
||
.y150{bottom:35.356000pt;}
|
||
.y19c{bottom:35.456000pt;}
|
||
.y18d{bottom:35.534667pt;}
|
||
.y144{bottom:36.750667pt;}
|
||
.y202{bottom:38.418667pt;}
|
||
.ya9{bottom:38.962667pt;}
|
||
.y2b{bottom:39.766667pt;}
|
||
.ycd{bottom:39.942667pt;}
|
||
.y16{bottom:40.417333pt;}
|
||
.y96{bottom:40.616000pt;}
|
||
.yc1{bottom:41.817333pt;}
|
||
.y133{bottom:41.842667pt;}
|
||
.yf1{bottom:42.077333pt;}
|
||
.y1c9{bottom:42.098667pt;}
|
||
.y13b{bottom:42.506667pt;}
|
||
.ye7{bottom:42.629333pt;}
|
||
.y39{bottom:42.688000pt;}
|
||
.y220{bottom:42.960000pt;}
|
||
.y230{bottom:44.681333pt;}
|
||
.y1ae{bottom:45.800000pt;}
|
||
.y214{bottom:46.681333pt;}
|
||
.y1f{bottom:47.304000pt;}
|
||
.y1f6{bottom:47.573333pt;}
|
||
.y51{bottom:47.624000pt;}
|
||
.y19e{bottom:48.188000pt;}
|
||
.y23a{bottom:48.473333pt;}
|
||
.y182{bottom:48.666667pt;}
|
||
.y5c{bottom:48.954667pt;}
|
||
.y11b{bottom:49.504000pt;}
|
||
.y106{bottom:49.536000pt;}
|
||
.y64{bottom:49.574667pt;}
|
||
.y1e9{bottom:49.916000pt;}
|
||
.y19b{bottom:49.968000pt;}
|
||
.yb3{bottom:50.652000pt;}
|
||
.y45{bottom:51.569333pt;}
|
||
.y6e{bottom:52.086667pt;}
|
||
.y14f{bottom:52.160000pt;}
|
||
.y201{bottom:52.930667pt;}
|
||
.y9f{bottom:53.421333pt;}
|
||
.y143{bottom:53.554667pt;}
|
||
.y86{bottom:54.197333pt;}
|
||
.y1de{bottom:54.365333pt;}
|
||
.y18c{bottom:56.309333pt;}
|
||
.yc0{bottom:56.330667pt;}
|
||
.y2a{bottom:56.569333pt;}
|
||
.y1c8{bottom:56.610667pt;}
|
||
.ycc{bottom:56.745333pt;}
|
||
.y132{bottom:57.317333pt;}
|
||
.y13a{bottom:57.981333pt;}
|
||
.y173{bottom:57.986667pt;}
|
||
.y95{bottom:58.948000pt;}
|
||
.y22f{bottom:59.193333pt;}
|
||
.ye6{bottom:59.433333pt;}
|
||
.y1ad{bottom:60.313333pt;}
|
||
.y1b8{bottom:60.773333pt;}
|
||
.y213{bottom:61.193333pt;}
|
||
.yf0{bottom:62.853333pt;}
|
||
.y15b{bottom:63.081333pt;}
|
||
.y181{bottom:63.178667pt;}
|
||
.y1ec{bottom:64.480000pt;}
|
||
.y113{bottom:64.992000pt;}
|
||
.y21f{bottom:65.064000pt;}
|
||
.y15{bottom:66.021333pt;}
|
||
.y8d{bottom:66.158667pt;}
|
||
.y11a{bottom:66.306667pt;}
|
||
.y105{bottom:66.340000pt;}
|
||
.y1d3{bottom:66.609333pt;}
|
||
.y200{bottom:67.442667pt;}
|
||
.yb2{bottom:67.456000pt;}
|
||
.y50{bottom:68.398667pt;}
|
||
.y239{bottom:68.681333pt;}
|
||
.y14e{bottom:68.964000pt;}
|
||
.y142{bottom:70.358667pt;}
|
||
.y6d{bottom:70.417333pt;}
|
||
.ybf{bottom:70.842667pt;}
|
||
.y1c7{bottom:71.122667pt;}
|
||
.y1dd{bottom:71.168000pt;}
|
||
.yda{bottom:71.962667pt;}
|
||
.y29{bottom:72.045333pt;}
|
||
.y5{bottom:72.093333pt;}
|
||
.y164{bottom:72.286667pt;}
|
||
.y63{bottom:72.445333pt;}
|
||
.y38{bottom:72.761333pt;}
|
||
.y131{bottom:72.792000pt;}
|
||
.y1e{bottom:72.908000pt;}
|
||
.ycb{bottom:73.549333pt;}
|
||
.y16a{bottom:73.598667pt;}
|
||
.y22e{bottom:73.705333pt;}
|
||
.y9e{bottom:74.197333pt;}
|
||
.y139{bottom:74.785333pt;}
|
||
.y1ac{bottom:74.825333pt;}
|
||
.y1f5{bottom:75.614667pt;}
|
||
.ya8{bottom:75.677333pt;}
|
||
.y212{bottom:75.705333pt;}
|
||
.ye5{bottom:76.236000pt;}
|
||
.yfc{bottom:78.377333pt;}
|
||
.y172{bottom:78.762667pt;}
|
||
.y85{bottom:78.958667pt;}
|
||
.y19a{bottom:78.993333pt;}
|
||
.y94{bottom:79.902667pt;}
|
||
.y1e8{bottom:80.281333pt;}
|
||
.y15a{bottom:81.413333pt;}
|
||
.y1b7{bottom:81.548000pt;}
|
||
.y112{bottom:81.796000pt;}
|
||
.y12c{bottom:82.290667pt;}
|
||
.y5b{bottom:82.681333pt;}
|
||
.y119{bottom:83.110667pt;}
|
||
.y104{bottom:83.144000pt;}
|
||
.yb1{bottom:84.258667pt;}
|
||
.y76{bottom:84.440000pt;}
|
||
.ybe{bottom:85.354667pt;}
|
||
.y44{bottom:85.628000pt;}
|
||
.y14d{bottom:85.766667pt;}
|
||
.y21e{bottom:85.838667pt;}
|
||
.yef{bottom:86.285333pt;}
|
||
.y18b{bottom:86.878667pt;}
|
||
.y141{bottom:87.161333pt;}
|
||
.y6c{bottom:87.221333pt;}
|
||
.y1dc{bottom:87.972000pt;}
|
||
.y22d{bottom:88.217333pt;}
|
||
.y130{bottom:88.268000pt;}
|
||
.y238{bottom:88.308000pt;}
|
||
.yd9{bottom:88.765333pt;}
|
||
.y4f{bottom:89.174667pt;}
|
||
.y37{bottom:89.232000pt;}
|
||
.y1ab{bottom:89.337333pt;}
|
||
.y211{bottom:90.217333pt;}
|
||
.y138{bottom:90.260000pt;}
|
||
.yca{bottom:90.353333pt;}
|
||
.y163{bottom:90.617333pt;}
|
||
.y14{bottom:91.625333pt;}
|
||
.y180{bottom:92.202667pt;}
|
||
.ye4{bottom:93.040000pt;}
|
||
.y199{bottom:93.505333pt;}
|
||
.y4{bottom:94.326667pt;}
|
||
.y169{bottom:94.374667pt;}
|
||
.yfb{bottom:95.181333pt;}
|
||
.ya7{bottom:96.453333pt;}
|
||
.y1ff{bottom:96.466667pt;}
|
||
.y1d2{bottom:96.682667pt;}
|
||
.y8c{bottom:97.561333pt;}
|
||
.y1d{bottom:98.512000pt;}
|
||
.y111{bottom:98.598667pt;}
|
||
.y159{bottom:99.744000pt;}
|
||
.ybd{bottom:99.866667pt;}
|
||
.y103{bottom:99.946667pt;}
|
||
.y1c6{bottom:100.146667pt;}
|
||
.yb0{bottom:101.062667pt;}
|
||
.y1b6{bottom:102.324000pt;}
|
||
.y43{bottom:102.430667pt;}
|
||
.y22c{bottom:102.730667pt;}
|
||
.yb{bottom:102.822667pt;}
|
||
.y1f4{bottom:103.656000pt;}
|
||
.y1aa{bottom:103.849333pt;}
|
||
.y140{bottom:103.965333pt;}
|
||
.y6b{bottom:104.025333pt;}
|
||
.y9d{bottom:104.270667pt;}
|
||
.y210{bottom:104.729333pt;}
|
||
.y1db{bottom:104.776000pt;}
|
||
.y12f{bottom:105.070667pt;}
|
||
.yd8{bottom:105.569333pt;}
|
||
.y5a{bottom:106.126667pt;}
|
||
.y17f{bottom:106.714667pt;}
|
||
.yc9{bottom:106.824000pt;}
|
||
.y137{bottom:107.064000pt;}
|
||
.y21d{bottom:107.909333pt;}
|
||
.y198{bottom:108.017333pt;}
|
||
.y28{bottom:108.374667pt;}
|
||
.y36{bottom:108.693333pt;}
|
||
.y162{bottom:108.949333pt;}
|
||
.y1e7{bottom:108.993333pt;}
|
||
.y62{bottom:109.160000pt;}
|
||
.ye3{bottom:109.844000pt;}
|
||
.y1fe{bottom:110.978667pt;}
|
||
.y84{bottom:110.992000pt;}
|
||
.yfa{bottom:111.985333pt;}
|
||
.y75{bottom:113.186667pt;}
|
||
.ybc{bottom:114.378667pt;}
|
||
.y1c5{bottom:114.658667pt;}
|
||
.y110{bottom:115.402667pt;}
|
||
.y93{bottom:115.920000pt;}
|
||
.y118{bottom:116.717333pt;}
|
||
.y102{bottom:116.750667pt;}
|
||
.yee{bottom:116.989333pt;}
|
||
.y237{bottom:117.020000pt;}
|
||
.y13{bottom:117.228000pt;}
|
||
.y22b{bottom:117.242667pt;}
|
||
.y1d1{bottom:117.457333pt;}
|
||
.yaf{bottom:117.866667pt;}
|
||
.y4e{bottom:117.920000pt;}
|
||
.y158{bottom:118.076000pt;}
|
||
.y1a9{bottom:118.361333pt;}
|
||
.y42{bottom:119.234667pt;}
|
||
.y20f{bottom:119.241333pt;}
|
||
.y14c{bottom:119.374667pt;}
|
||
.y12e{bottom:120.546667pt;}
|
||
.y6a{bottom:120.828000pt;}
|
||
.y18a{bottom:120.937333pt;}
|
||
.y17e{bottom:121.228000pt;}
|
||
.yd7{bottom:122.373333pt;}
|
||
.y1eb{bottom:122.529333pt;}
|
||
.y136{bottom:122.538667pt;}
|
||
.y1e6{bottom:123.505333pt;}
|
||
.y1c{bottom:124.114667pt;}
|
||
.y9c{bottom:125.046667pt;}
|
||
.y1fd{bottom:125.490667pt;}
|
||
.y171{bottom:126.104000pt;}
|
||
.y170{bottom:126.105333pt;}
|
||
.ye2{bottom:126.646667pt;}
|
||
.ya{bottom:128.426667pt;}
|
||
.yf9{bottom:128.788000pt;}
|
||
.ybb{bottom:128.890667pt;}
|
||
.y8b{bottom:128.964000pt;}
|
||
.y1c4{bottom:129.170667pt;}
|
||
.y27{bottom:129.362667pt;}
|
||
.y168{bottom:129.728000pt;}
|
||
.y161{bottom:129.937333pt;}
|
||
.y1f3{bottom:130.474667pt;}
|
||
.y22a{bottom:131.754667pt;}
|
||
.y10f{bottom:132.206667pt;}
|
||
.y1a8{bottom:132.873333pt;}
|
||
.y1b5{bottom:132.892000pt;}
|
||
.ya6{bottom:133.169333pt;}
|
||
.y117{bottom:133.189333pt;}
|
||
.y101{bottom:133.553333pt;}
|
||
.y20e{bottom:133.753333pt;}
|
||
.yed{bottom:133.793333pt;}
|
||
.yae{bottom:134.669333pt;}
|
||
.y17d{bottom:135.740000pt;}
|
||
.y21c{bottom:135.957333pt;}
|
||
.y41{bottom:136.038667pt;}
|
||
.y14b{bottom:136.177333pt;}
|
||
.y157{bottom:136.406667pt;}
|
||
.y92{bottom:136.696000pt;}
|
||
.yc8{bottom:137.034667pt;}
|
||
.y197{bottom:137.041333pt;}
|
||
.y13f{bottom:137.240000pt;}
|
||
.y69{bottom:137.300000pt;}
|
||
.y12d{bottom:137.350667pt;}
|
||
.y135{bottom:138.014667pt;}
|
||
.y1e5{bottom:138.017333pt;}
|
||
.y1da{bottom:138.382667pt;}
|
||
.y236{bottom:138.420000pt;}
|
||
.y4d{bottom:138.694667pt;}
|
||
.y35{bottom:138.766667pt;}
|
||
.yd6{bottom:139.176000pt;}
|
||
.y1fc{bottom:140.004000pt;}
|
||
.y59{bottom:140.185333pt;}
|
||
.y74{bottom:141.932000pt;}
|
||
.y127{bottom:142.397333pt;}
|
||
.y12{bottom:142.832000pt;}
|
||
.yba{bottom:143.402667pt;}
|
||
.ye1{bottom:143.450667pt;}
|
||
.y1c3{bottom:143.682667pt;}
|
||
.yf8{bottom:145.592000pt;}
|
||
.y61{bottom:145.876000pt;}
|
||
.y229{bottom:146.266667pt;}
|
||
.y1a7{bottom:147.385333pt;}
|
||
.y20d{bottom:148.265333pt;}
|
||
.y10e{bottom:149.009333pt;}
|
||
.y1d0{bottom:149.388000pt;}
|
||
.y1b{bottom:149.718667pt;}
|
||
.y17c{bottom:150.252000pt;}
|
||
.y26{bottom:150.350667pt;}
|
||
.y100{bottom:150.357333pt;}
|
||
.y167{bottom:150.504000pt;}
|
||
.yec{bottom:150.597333pt;}
|
||
.y1ea{bottom:151.553333pt;}
|
||
.y7d{bottom:152.482667pt;}
|
||
.y1e4{bottom:152.529333pt;}
|
||
.y40{bottom:152.841333pt;}
|
||
.ya5{bottom:153.944000pt;}
|
||
.y9{bottom:154.030667pt;}
|
||
.y1fb{bottom:154.516000pt;}
|
||
.y189{bottom:154.996000pt;}
|
||
.y9b{bottom:155.120000pt;}
|
||
.y1d9{bottom:155.186667pt;}
|
||
.y4c{bottom:155.498667pt;}
|
||
.y34{bottom:155.570667pt;}
|
||
.yd5{bottom:155.980000pt;}
|
||
.y58{bottom:156.989333pt;}
|
||
.y156{bottom:157.394667pt;}
|
||
.yb9{bottom:157.914667pt;}
|
||
.y235{bottom:158.045333pt;}
|
||
.y68{bottom:158.088000pt;}
|
||
.y126{bottom:159.201333pt;}
|
||
.y1f2{bottom:159.737333pt;}
|
||
.y83{bottom:159.814667pt;}
|
||
.y116{bottom:160.254667pt;}
|
||
.y8a{bottom:160.365333pt;}
|
||
.y228{bottom:160.778667pt;}
|
||
.y1a6{bottom:161.897333pt;}
|
||
.yf7{bottom:162.396000pt;}
|
||
.y20c{bottom:162.777333pt;}
|
||
.y1b4{bottom:162.966667pt;}
|
||
.y21b{bottom:164.669333pt;}
|
||
.y91{bottom:164.744000pt;}
|
||
.y17b{bottom:164.764000pt;}
|
||
.yc7{bottom:165.082667pt;}
|
||
.y10d{bottom:165.813333pt;}
|
||
.y196{bottom:166.065333pt;}
|
||
.y60{bottom:166.650667pt;}
|
||
.yff{bottom:167.161333pt;}
|
||
.yeb{bottom:167.400000pt;}
|
||
.yad{bottom:167.945333pt;}
|
||
.y11{bottom:168.436000pt;}
|
||
.y1fa{bottom:169.028000pt;}
|
||
.y7c{bottom:169.286667pt;}
|
||
.y160{bottom:169.309333pt;}
|
||
.y3f{bottom:169.313333pt;}
|
||
.y14a{bottom:169.785333pt;}
|
||
.y73{bottom:170.677333pt;}
|
||
.y3{bottom:170.858667pt;}
|
||
.y166{bottom:171.278667pt;}
|
||
.y25{bottom:171.305333pt;}
|
||
.y4b{bottom:171.969333pt;}
|
||
.y33{bottom:172.041333pt;}
|
||
.yb8{bottom:172.426667pt;}
|
||
.y1c2{bottom:172.708000pt;}
|
||
.yd4{bottom:172.782667pt;}
|
||
.y16f{bottom:173.446667pt;}
|
||
.y57{bottom:173.793333pt;}
|
||
.y125{bottom:174.676000pt;}
|
||
.y227{bottom:175.290667pt;}
|
||
.y188{bottom:175.770667pt;}
|
||
.y9a{bottom:175.894667pt;}
|
||
.y1a5{bottom:176.409333pt;}
|
||
.ye0{bottom:177.057333pt;}
|
||
.y20b{bottom:177.290667pt;}
|
||
.y13e{bottom:177.921333pt;}
|
||
.y1f1{bottom:178.068000pt;}
|
||
.yf6{bottom:178.866667pt;}
|
||
.y17a{bottom:179.276000pt;}
|
||
.y1cf{bottom:179.461333pt;}
|
||
.y8{bottom:179.633333pt;}
|
||
.y195{bottom:180.577333pt;}
|
||
.y82{bottom:180.590667pt;}
|
||
.y12b{bottom:180.653333pt;}
|
||
.y1e3{bottom:181.554667pt;}
|
||
.y10c{bottom:182.617333pt;}
|
||
.y1f9{bottom:183.540000pt;}
|
||
.y1b3{bottom:183.741333pt;}
|
||
.yfe{bottom:183.964000pt;}
|
||
.yea{bottom:184.204000pt;}
|
||
.y20{bottom:184.330667pt;}
|
||
.y90{bottom:185.518667pt;}
|
||
.yc6{bottom:185.857333pt;}
|
||
.y7b{bottom:186.090667pt;}
|
||
.y149{bottom:186.588000pt;}
|
||
.yb7{bottom:186.940000pt;}
|
||
.y21a{bottom:187.218667pt;}
|
||
.y1c1{bottom:187.220000pt;}
|
||
.y234{bottom:187.374667pt;}
|
||
.y15f{bottom:187.640000pt;}
|
||
.y3e{bottom:188.773333pt;}
|
||
.y1d8{bottom:188.793333pt;}
|
||
.y109{bottom:189.254667pt;}
|
||
.yd3{bottom:189.586667pt;}
|
||
.y226{bottom:189.802667pt;}
|
||
.y56{bottom:190.264000pt;}
|
||
.y1a{bottom:190.586667pt;}
|
||
.y1a4{bottom:190.589333pt;}
|
||
.ya4{bottom:190.660000pt;}
|
||
.y72{bottom:191.452000pt;}
|
||
.y124{bottom:191.480000pt;}
|
||
.y32{bottom:191.501333pt;}
|
||
.y89{bottom:191.768000pt;}
|
||
.y20a{bottom:191.802667pt;}
|
||
.y4a{bottom:192.758667pt;}
|
||
.y165{bottom:193.349333pt;}
|
||
.y179{bottom:193.788000pt;}
|
||
.ydf{bottom:193.861333pt;}
|
||
.y10{bottom:194.040000pt;}
|
||
.y16e{bottom:194.222667pt;}
|
||
.y194{bottom:195.089333pt;}
|
||
.y1e2{bottom:196.066667pt;}
|
||
.y12a{bottom:196.129333pt;}
|
||
.y155{bottom:196.766667pt;}
|
||
.y1f8{bottom:198.052000pt;}
|
||
.y13d{bottom:198.696000pt;}
|
||
.y10b{bottom:199.420000pt;}
|
||
.y67{bottom:200.117333pt;}
|
||
.y1ce{bottom:200.237333pt;}
|
||
.yfd{bottom:200.436000pt;}
|
||
.ye9{bottom:200.676000pt;}
|
||
.yb6{bottom:201.452000pt;}
|
||
.y1c0{bottom:201.732000pt;}
|
||
.yac{bottom:201.984000pt;}
|
||
.y7a{bottom:202.893333pt;}
|
||
.y1f0{bottom:203.041333pt;}
|
||
.y5f{bottom:203.366667pt;}
|
||
.y148{bottom:203.392000pt;}
|
||
.y11f{bottom:204.298667pt;}
|
||
.y225{bottom:204.314667pt;}
|
||
.y7{bottom:205.237333pt;}
|
||
.y1d7{bottom:205.597333pt;}
|
||
.y99{bottom:205.969333pt;}
|
||
.y15e{bottom:205.970667pt;}
|
||
.yd2{bottom:206.058667pt;}
|
||
.y209{bottom:206.314667pt;}
|
||
.y219{bottom:207.994667pt;}
|
||
.y233{bottom:208.149333pt;}
|
||
.yf5{bottom:208.257333pt;}
|
||
.y123{bottom:208.284000pt;}
|
||
.y178{bottom:208.300000pt;}
|
||
.y81{bottom:208.638667pt;}
|
||
.y193{bottom:209.602667pt;}
|
||
.y1e1{bottom:210.578667pt;}
|
||
.yde{bottom:210.665333pt;}
|
||
.ya3{bottom:211.434667pt;}
|
||
.y129{bottom:211.604000pt;}
|
||
.y187{bottom:211.686667pt;}
|
||
.y1f7{bottom:212.232000pt;}
|
||
.y24{bottom:213.301333pt;}
|
||
.y55{bottom:213.709333pt;}
|
||
.yc5{bottom:213.905333pt;}
|
||
.y154{bottom:215.097333pt;}
|
||
.y1b2{bottom:215.672000pt;}
|
||
.y19{bottom:216.190667pt;}
|
||
.y8f{bottom:216.224000pt;}
|
||
.y1bf{bottom:216.244000pt;}
|
||
.y1a3{bottom:216.286667pt;}
|
||
.y66{bottom:218.449333pt;}
|
||
.y108{bottom:218.644000pt;}
|
||
.y224{bottom:218.826667pt;}
|
||
.yf{bottom:219.644000pt;}
|
||
.y79{bottom:219.697333pt;}
|
||
.y147{bottom:220.196000pt;}
|
||
.y208{bottom:220.826667pt;}
|
||
.y1ef{bottom:221.372000pt;}
|
||
.y2{bottom:221.396000pt;}
|
||
.y49{bottom:221.504000pt;}
|
||
.y31{bottom:221.576000pt;}
|
||
.y1d6{bottom:222.400000pt;}
|
||
.y177{bottom:222.812000pt;}
|
||
.y3d{bottom:222.832000pt;}
|
||
.y88{bottom:223.169333pt;}
|
||
.y71{bottom:223.485333pt;}
|
||
.y122{bottom:223.758667pt;}
|
||
.y192{bottom:224.114667pt;}
|
||
.y5e{bottom:224.142667pt;}
|
||
.y15d{bottom:224.302667pt;}
|
||
.y98{bottom:226.744000pt;}
|
||
.y128{bottom:227.080000pt;}
|
||
.ye8{bottom:227.408000pt;}
|
||
.ydd{bottom:227.468000pt;}
|
||
.yf4{bottom:229.032000pt;}
|
||
.y80{bottom:229.413333pt;}
|
||
.y218{bottom:230.065333pt;}
|
||
.yb5{bottom:230.144000pt;}
|
||
.y1be{bottom:230.756000pt;}
|
||
.y223{bottom:233.008000pt;}
|
||
.y10a{bottom:233.026667pt;}
|
||
.y153{bottom:233.429333pt;}
|
||
.y1cd{bottom:234.044000pt;}
|
||
.y23{bottom:234.289333pt;}
|
||
.yc4{bottom:234.681333pt;}
|
||
.y207{bottom:235.338667pt;}
|
||
.yd1{bottom:235.448000pt;}
|
||
.y1a2{bottom:236.494667pt;}
|
||
.y78{bottom:236.501333pt;}
|
||
.y65{bottom:236.780000pt;}
|
||
.y176{bottom:236.992000pt;}
|
||
.y48{bottom:238.308000pt;}
|
||
.y30{bottom:238.378667pt;}
|
||
.y191{bottom:238.626667pt;}
|
||
.y1d5{bottom:239.204000pt;}
|
||
.y121{bottom:239.233333pt;}
|
||
.y107{bottom:239.420000pt;}
|
||
.y1e0{bottom:239.602667pt;}
|
||
.y3c{bottom:239.636000pt;}
|
||
.y16d{bottom:241.565333pt;}
|
||
.y18{bottom:241.794667pt;}
|
||
.y70{bottom:244.260000pt;}
|
||
.ydc{bottom:244.272000pt;}
|
||
.ye{bottom:245.248000pt;}
|
||
.y1bd{bottom:245.268000pt;}
|
||
.y186{bottom:245.745333pt;}
|
||
.y54{bottom:247.768000pt;}
|
||
.y15c{bottom:247.794667pt;}
|
||
.ya2{bottom:248.150667pt;}
|
||
.y1{bottom:248.893333pt;}
|
||
.y1ee{bottom:249.413333pt;}
|
||
.y8e{bottom:249.498667pt;}
|
||
.yf3{bottom:249.808000pt;}
|
||
.y206{bottom:249.850667pt;}
|
||
.y7f{bottom:250.189333pt;}
|
||
.yab{bottom:251.504000pt;}
|
||
.y77{bottom:252.972000pt;}
|
||
.y190{bottom:253.138667pt;}
|
||
.y146{bottom:253.470667pt;}
|
||
.y1df{bottom:253.782667pt;}
|
||
.y152{bottom:254.417333pt;}
|
||
.y87{bottom:254.572000pt;}
|
||
.y120{bottom:254.709333pt;}
|
||
.y47{bottom:254.778667pt;}
|
||
.y2f{bottom:254.850667pt;}
|
||
.y22{bottom:255.277333pt;}
|
||
.y5d{bottom:255.456000pt;}
|
||
.y3b{bottom:256.108000pt;}
|
||
.yd0{bottom:256.224000pt;}
|
||
.y175{bottom:259.441333pt;}
|
||
.y1bc{bottom:259.780000pt;}
|
||
.y115{bottom:261.076000pt;}
|
||
.y1cc{bottom:262.092000pt;}
|
||
.y1a1{bottom:262.098667pt;}
|
||
.y16c{bottom:262.340000pt;}
|
||
.y205{bottom:264.030667pt;}
|
||
.y17{bottom:267.398667pt;}
|
||
.y18f{bottom:267.650667pt;}
|
||
.y53{bottom:268.544000pt;}
|
||
.ya1{bottom:268.925333pt;}
|
||
.yd{bottom:270.852000pt;}
|
||
.y1d4{bottom:272.478667pt;}
|
||
.y1bb{bottom:274.292000pt;}
|
||
.y2e{bottom:275.568000pt;}
|
||
.y21{bottom:276.232000pt;}
|
||
.y11e{bottom:277.229333pt;}
|
||
.ydb{bottom:277.546667pt;}
|
||
.y145{bottom:280.204000pt;}
|
||
.y174{bottom:280.217333pt;}
|
||
.y18e{bottom:281.830667pt;}
|
||
.y204{bottom:282.494667pt;}
|
||
.y1a0{bottom:282.873333pt;}
|
||
.y1ba{bottom:288.472000pt;}
|
||
.y6{bottom:314.865333pt;}
|
||
.he{height:29.499997pt;}
|
||
.h8{height:31.880400pt;}
|
||
.hc{height:33.187635pt;}
|
||
.hb{height:35.865600pt;}
|
||
.h9{height:36.768636pt;}
|
||
.h5{height:39.850400pt;}
|
||
.hd{height:40.378215pt;}
|
||
.ha{height:43.636400pt;}
|
||
.h4{height:44.250180pt;}
|
||
.h6{height:47.820800pt;}
|
||
.h7{height:57.384800pt;}
|
||
.h3{height:78.903200pt;}
|
||
.h2{height:99.148400pt;}
|
||
.h0{height:340.157333pt;}
|
||
.h1{height:340.666667pt;}
|
||
.w0{width:604.724000pt;}
|
||
.w1{width:605.333333pt;}
|
||
.x0{left:0.000000pt;}
|
||
.x4{left:14.222667pt;}
|
||
.x1b{left:20.377333pt;}
|
||
.x1{left:37.794667pt;}
|
||
.x11{left:41.750667pt;}
|
||
.x21{left:43.640000pt;}
|
||
.x5{left:45.984000pt;}
|
||
.xc{left:47.625333pt;}
|
||
.x9{left:49.281333pt;}
|
||
.x10{left:52.272000pt;}
|
||
.x1c{left:54.210667pt;}
|
||
.x17{left:56.624000pt;}
|
||
.x16{left:60.377333pt;}
|
||
.x14{left:62.901333pt;}
|
||
.x6{left:67.314667pt;}
|
||
.xd{left:70.870667pt;}
|
||
.xe{left:79.438667pt;}
|
||
.x18{left:81.730667pt;}
|
||
.xb{left:83.856000pt;}
|
||
.x12{left:85.325333pt;}
|
||
.x15{left:88.006667pt;}
|
||
.xa{left:91.992000pt;}
|
||
.x1f{left:95.977333pt;}
|
||
.x13{left:100.598667pt;}
|
||
.x22{left:105.541333pt;}
|
||
.x19{left:113.113333pt;}
|
||
.x2{left:140.005333pt;}
|
||
.x8{left:142.362667pt;}
|
||
.x23{left:150.705333pt;}
|
||
.x1a{left:168.612000pt;}
|
||
.x20{left:218.450667pt;}
|
||
.x24{left:219.812000pt;}
|
||
.x1d{left:334.717333pt;}
|
||
.x1e{left:351.546667pt;}
|
||
.x3{left:504.940000pt;}
|
||
.xf{left:565.870667pt;}
|
||
.x7{left:571.516000pt;}
|
||
}
|
||
</style>
|
||
<script>
|
||
/*
|
||
Copyright 2012 Mozilla Foundation
|
||
Copyright 2013 Lu Wang <coolwanglu@gmail.com>
|
||
Apachine License Version 2.0
|
||
*/
|
||
(function(){function b(a,b,e,f){var c=(a.className||"").split(/\s+/g);""===c[0]&&c.shift();var d=c.indexOf(b);0>d&&e&&c.push(b);0<=d&&f&&c.splice(d,1);a.className=c.join(" ");return 0<=d}if(!("classList"in document.createElement("div"))){var e={add:function(a){b(this.element,a,!0,!1)},contains:function(a){return b(this.element,a,!1,!1)},remove:function(a){b(this.element,a,!1,!0)},toggle:function(a){b(this.element,a,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList;
|
||
var a=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});Object.defineProperty(this,"_classList",{value:a,writable:!1,enumerable:!1});return a},enumerable:!0})}})();
|
||
</script>
|
||
<script>
|
||
(function(){/*
|
||
pdf2htmlEX.js: Core UI functions for pdf2htmlEX
|
||
Copyright 2012,2013 Lu Wang <coolwanglu@gmail.com> and other contributors
|
||
https://github.com/pdf2htmlEX/pdf2htmlEX/blob/master/share/LICENSE
|
||
*/
|
||
var pdf2htmlEX=window.pdf2htmlEX=window.pdf2htmlEX||{},CSS_CLASS_NAMES={page_frame:"pf",page_content_box:"pc",page_data:"pi",background_image:"bi",link:"l",input_radio:"ir",__dummy__:"no comma"},DEFAULT_CONFIG={container_id:"page-container",sidebar_id:"sidebar",outline_id:"outline",loading_indicator_cls:"loading-indicator",preload_pages:3,render_timeout:100,scale_step:0.9,key_handler:!0,hashchange_handler:!0,view_history_handler:!0,__dummy__:"no comma"},EPS=1E-6;
|
||
function invert(a){var b=a[0]*a[3]-a[1]*a[2];return[a[3]/b,-a[1]/b,-a[2]/b,a[0]/b,(a[2]*a[5]-a[3]*a[4])/b,(a[1]*a[4]-a[0]*a[5])/b]}function transform(a,b){return[a[0]*b[0]+a[2]*b[1]+a[4],a[1]*b[0]+a[3]*b[1]+a[5]]}function get_page_number(a){return parseInt(a.getAttribute("data-page-no"),16)}function disable_dragstart(a){for(var b=0,c=a.length;b<c;++b)a[b].addEventListener("dragstart",function(){return!1},!1)}
|
||
function clone_and_extend_objs(a){for(var b={},c=0,e=arguments.length;c<e;++c){var h=arguments[c],d;for(d in h)h.hasOwnProperty(d)&&(b[d]=h[d])}return b}
|
||
function Page(a){if(a){this.shown=this.loaded=!1;this.page=a;this.num=get_page_number(a);this.original_height=a.clientHeight;this.original_width=a.clientWidth;var b=a.getElementsByClassName(CSS_CLASS_NAMES.page_content_box)[0];b&&(this.content_box=b,this.original_scale=this.cur_scale=this.original_height/b.clientHeight,this.page_data=JSON.parse(a.getElementsByClassName(CSS_CLASS_NAMES.page_data)[0].getAttribute("data-data")),this.ctm=this.page_data.ctm,this.ictm=invert(this.ctm),this.loaded=!0)}}
|
||
Page.prototype={hide:function(){this.loaded&&this.shown&&(this.content_box.classList.remove("opened"),this.shown=!1)},show:function(){this.loaded&&!this.shown&&(this.content_box.classList.add("opened"),this.shown=!0)},rescale:function(a){this.cur_scale=0===a?this.original_scale:a;this.loaded&&(a=this.content_box.style,a.msTransform=a.webkitTransform=a.transform="scale("+this.cur_scale.toFixed(3)+")");a=this.page.style;a.height=this.original_height*this.cur_scale+"px";a.width=this.original_width*this.cur_scale+
|
||
"px"},view_position:function(){var a=this.page,b=a.parentNode;return[b.scrollLeft-a.offsetLeft-a.clientLeft,b.scrollTop-a.offsetTop-a.clientTop]},height:function(){return this.page.clientHeight},width:function(){return this.page.clientWidth}};function Viewer(a){this.config=clone_and_extend_objs(DEFAULT_CONFIG,0<arguments.length?a:{});this.pages_loading=[];this.init_before_loading_content();var b=this;document.addEventListener("DOMContentLoaded",function(){b.init_after_loading_content()},!1)}
|
||
Viewer.prototype={scale:1,cur_page_idx:0,first_page_idx:0,init_before_loading_content:function(){this.pre_hide_pages()},initialize_radio_button:function(){for(var a=document.getElementsByClassName(CSS_CLASS_NAMES.input_radio),b=0;b<a.length;b++)a[b].addEventListener("click",function(){this.classList.toggle("checked")})},init_after_loading_content:function(){this.sidebar=document.getElementById(this.config.sidebar_id);this.outline=document.getElementById(this.config.outline_id);this.container=document.getElementById(this.config.container_id);
|
||
this.loading_indicator=document.getElementsByClassName(this.config.loading_indicator_cls)[0];for(var a=!0,b=this.outline.childNodes,c=0,e=b.length;c<e;++c)if("ul"===b[c].nodeName.toLowerCase()){a=!1;break}a||this.sidebar.classList.add("opened");this.find_pages();if(0!=this.pages.length){disable_dragstart(document.getElementsByClassName(CSS_CLASS_NAMES.background_image));this.config.key_handler&&this.register_key_handler();var h=this;this.config.hashchange_handler&&window.addEventListener("hashchange",
|
||
function(a){h.navigate_to_dest(document.location.hash.substring(1))},!1);this.config.view_history_handler&&window.addEventListener("popstate",function(a){a.state&&h.navigate_to_dest(a.state)},!1);this.container.addEventListener("scroll",function(){h.update_page_idx();h.schedule_render(!0)},!1);[this.container,this.outline].forEach(function(a){a.addEventListener("click",h.link_handler.bind(h),!1)});this.initialize_radio_button();this.render()}},find_pages:function(){for(var a=[],b={},c=this.container.childNodes,
|
||
e=0,h=c.length;e<h;++e){var d=c[e];d.nodeType===Node.ELEMENT_NODE&&d.classList.contains(CSS_CLASS_NAMES.page_frame)&&(d=new Page(d),a.push(d),b[d.num]=a.length-1)}this.pages=a;this.page_map=b},load_page:function(a,b,c){var e=this.pages;if(!(a>=e.length||(e=e[a],e.loaded||this.pages_loading[a]))){var e=e.page,h=e.getAttribute("data-page-url");if(h){this.pages_loading[a]=!0;var d=e.getElementsByClassName(this.config.loading_indicator_cls)[0];"undefined"===typeof d&&(d=this.loading_indicator.cloneNode(!0),
|
||
d.classList.add("active"),e.appendChild(d));var f=this,g=new XMLHttpRequest;g.open("GET",h,!0);g.onload=function(){if(200===g.status||0===g.status){var b=document.createElement("div");b.innerHTML=g.responseText;for(var d=null,b=b.childNodes,e=0,h=b.length;e<h;++e){var p=b[e];if(p.nodeType===Node.ELEMENT_NODE&&p.classList.contains(CSS_CLASS_NAMES.page_frame)){d=p;break}}b=f.pages[a];f.container.replaceChild(d,b.page);b=new Page(d);f.pages[a]=b;b.hide();b.rescale(f.scale);disable_dragstart(d.getElementsByClassName(CSS_CLASS_NAMES.background_image));
|
||
f.schedule_render(!1);c&&c(b)}delete f.pages_loading[a]};g.send(null)}void 0===b&&(b=this.config.preload_pages);0<--b&&(f=this,setTimeout(function(){f.load_page(a+1,b)},0))}},pre_hide_pages:function(){var a="@media screen{."+CSS_CLASS_NAMES.page_content_box+"{display:none;}}",b=document.createElement("style");b.styleSheet?b.styleSheet.cssText=a:b.appendChild(document.createTextNode(a));document.head.appendChild(b)},render:function(){for(var a=this.container,b=a.scrollTop,c=a.clientHeight,a=b-c,b=
|
||
b+c+c,c=this.pages,e=0,h=c.length;e<h;++e){var d=c[e],f=d.page,g=f.offsetTop+f.clientTop,f=g+f.clientHeight;g<=b&&f>=a?d.loaded?d.show():this.load_page(e):d.hide()}},update_page_idx:function(){var a=this.pages,b=a.length;if(!(2>b)){for(var c=this.container,e=c.scrollTop,c=e+c.clientHeight,h=-1,d=b,f=d-h;1<f;){var g=h+Math.floor(f/2),f=a[g].page;f.offsetTop+f.clientTop+f.clientHeight>=e?d=g:h=g;f=d-h}this.first_page_idx=d;for(var g=h=this.cur_page_idx,k=0;d<b;++d){var f=a[d].page,l=f.offsetTop+f.clientTop,
|
||
f=f.clientHeight;if(l>c)break;f=(Math.min(c,l+f)-Math.max(e,l))/f;if(d===h&&Math.abs(f-1)<=EPS){g=h;break}f>k&&(k=f,g=d)}this.cur_page_idx=g}},schedule_render:function(a){if(void 0!==this.render_timer){if(!a)return;clearTimeout(this.render_timer)}var b=this;this.render_timer=setTimeout(function(){delete b.render_timer;b.render()},this.config.render_timeout)},register_key_handler:function(){var a=this;window.addEventListener("DOMMouseScroll",function(b){if(b.ctrlKey){b.preventDefault();var c=a.container,
|
||
e=c.getBoundingClientRect(),c=[b.clientX-e.left-c.clientLeft,b.clientY-e.top-c.clientTop];a.rescale(Math.pow(a.config.scale_step,b.detail),!0,c)}},!1);window.addEventListener("keydown",function(b){var c=!1,e=b.ctrlKey||b.metaKey,h=b.altKey;switch(b.keyCode){case 61:case 107:case 187:e&&(a.rescale(1/a.config.scale_step,!0),c=!0);break;case 173:case 109:case 189:e&&(a.rescale(a.config.scale_step,!0),c=!0);break;case 48:e&&(a.rescale(0,!1),c=!0);break;case 33:h?a.scroll_to(a.cur_page_idx-1):a.container.scrollTop-=
|
||
a.container.clientHeight;c=!0;break;case 34:h?a.scroll_to(a.cur_page_idx+1):a.container.scrollTop+=a.container.clientHeight;c=!0;break;case 35:a.container.scrollTop=a.container.scrollHeight;c=!0;break;case 36:a.container.scrollTop=0,c=!0}c&&b.preventDefault()},!1)},rescale:function(a,b,c){var e=this.scale;this.scale=a=0===a?1:b?e*a:a;c||(c=[0,0]);b=this.container;c[0]+=b.scrollLeft;c[1]+=b.scrollTop;for(var h=this.pages,d=h.length,f=this.first_page_idx;f<d;++f){var g=h[f].page;if(g.offsetTop+g.clientTop>=
|
||
c[1])break}g=f-1;0>g&&(g=0);var g=h[g].page,k=g.clientWidth,f=g.clientHeight,l=g.offsetLeft+g.clientLeft,m=c[0]-l;0>m?m=0:m>k&&(m=k);k=g.offsetTop+g.clientTop;c=c[1]-k;0>c?c=0:c>f&&(c=f);for(f=0;f<d;++f)h[f].rescale(a);b.scrollLeft+=m/e*a+g.offsetLeft+g.clientLeft-m-l;b.scrollTop+=c/e*a+g.offsetTop+g.clientTop-c-k;this.schedule_render(!0)},fit_width:function(){var a=this.cur_page_idx;this.rescale(this.container.clientWidth/this.pages[a].width(),!0);this.scroll_to(a)},fit_height:function(){var a=this.cur_page_idx;
|
||
this.rescale(this.container.clientHeight/this.pages[a].height(),!0);this.scroll_to(a)},get_containing_page:function(a){for(;a;){if(a.nodeType===Node.ELEMENT_NODE&&a.classList.contains(CSS_CLASS_NAMES.page_frame)){a=get_page_number(a);var b=this.page_map;return a in b?this.pages[b[a]]:null}a=a.parentNode}return null},link_handler:function(a){var b=a.target,c=b.getAttribute("data-dest-detail");if(c){if(this.config.view_history_handler)try{var e=this.get_current_view_hash();window.history.replaceState(e,
|
||
"","#"+e);window.history.pushState(c,"","#"+c)}catch(h){}this.navigate_to_dest(c,this.get_containing_page(b));a.preventDefault()}},navigate_to_dest:function(a,b){try{var c=JSON.parse(a)}catch(e){return}if(c instanceof Array){var h=c[0],d=this.page_map;if(h in d){for(var f=d[h],h=this.pages[f],d=2,g=c.length;d<g;++d){var k=c[d];if(null!==k&&"number"!==typeof k)return}for(;6>c.length;)c.push(null);var g=b||this.pages[this.cur_page_idx],d=g.view_position(),d=transform(g.ictm,[d[0],g.height()-d[1]]),
|
||
g=this.scale,l=[0,0],m=!0,k=!1,n=this.scale;switch(c[1]){case "XYZ":l=[null===c[2]?d[0]:c[2]*n,null===c[3]?d[1]:c[3]*n];g=c[4];if(null===g||0===g)g=this.scale;k=!0;break;case "Fit":case "FitB":l=[0,0];k=!0;break;case "FitH":case "FitBH":l=[0,null===c[2]?d[1]:c[2]*n];k=!0;break;case "FitV":case "FitBV":l=[null===c[2]?d[0]:c[2]*n,0];k=!0;break;case "FitR":l=[c[2]*n,c[5]*n],m=!1,k=!0}if(k){this.rescale(g,!1);var p=this,c=function(a){l=transform(a.ctm,l);m&&(l[1]=a.height()-l[1]);p.scroll_to(f,l)};h.loaded?
|
||
c(h):(this.load_page(f,void 0,c),this.scroll_to(f))}}}},scroll_to:function(a,b){var c=this.pages;if(!(0>a||a>=c.length)){c=c[a].view_position();void 0===b&&(b=[0,0]);var e=this.container;e.scrollLeft+=b[0]-c[0];e.scrollTop+=b[1]-c[1]}},get_current_view_hash:function(){var a=[],b=this.pages[this.cur_page_idx];a.push(b.num);a.push("XYZ");var c=b.view_position(),c=transform(b.ictm,[c[0],b.height()-c[1]]);a.push(c[0]/this.scale);a.push(c[1]/this.scale);a.push(this.scale);return JSON.stringify(a)}};
|
||
pdf2htmlEX.Viewer=Viewer;})();
|
||
</script>
|
||
<script>
|
||
try{
|
||
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
|
||
}catch(e){}
|
||
</script>
|
||
<title></title>
|
||
</head>
|
||
<body>
|
||
<div id="sidebar">
|
||
<div id="outline">
|
||
<ul><li><a class="l" href="#pf5" data-dest-detail='[5,"XYZ",28.346,255.118,null]'>Undefined Behavior</a><ul><li><a class="l" href="#pf7" data-dest-detail='[7,"XYZ",28.346,228.21,null]'>Illegal Behavior</a></li><li><a class="l" href="#pfa" data-dest-detail='[10,"XYZ",28.346,225.433,null]'>Platform Specific Behavior</a></li><li><a class="l" href="#pfb" data-dest-detail='[11,"XYZ",28.346,228.21,null]'>Unspecified Behavior</a></li><li><a class="l" href="#pfd" data-dest-detail='[13,"XYZ",28.346,204.232,null]'>Detecting Undefined Behavior</a></li></ul></li><li><a class="l" href="#pff" data-dest-detail='[15,"XYZ",28.346,255.118,null]'>Error Handing</a><ul><li><a class="l" href="#pf10" data-dest-detail='[16,"XYZ",28.346,223.622,null]'>Recoverable Error Handing</a></li><li><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",28.346,228.21,null]'>Return Code</a></li><li><a class="l" href="#pf13" data-dest-detail='[19,"XYZ",28.346,228.21,null]'>C++ Exceptions</a></li><li><a class="l" href="#pf1a" data-dest-detail='[26,"XYZ",28.346,228.21,null]'>Defining Custom Exceptions</a></li><li><a class="l" href="#pf1b" data-dest-detail='[27,"XYZ",28.346,228.21,null]'>noexcept Keyword</a></li><li><a class="l" href="#pf1d" data-dest-detail='[29,"XYZ",28.346,228.21,null]'>Memory Allocation Issues</a></li><li><a class="l" href="#pf21" data-dest-detail='[33,"XYZ",28.346,228.21,null]'>Return Code and Exception Summary</a></li><li><a class="l" href="#pf22" data-dest-detail='[34,"XYZ",28.346,228.21,null]'>std::expected</a></li><li><a class="l" href="#pf24" data-dest-detail='[36,"XYZ",28.346,214.837,null]'>Alternative Error Handling Approaches</a></li></ul></li><li><a class="l" href="#pf26" data-dest-detail='[38,"XYZ",28.346,255.118,null]'>Smart pointers</a><ul><li><a class="l" href="#pf29" data-dest-detail='[41,"XYZ",28.346,228.21,null]'>std::unique_ptr</a></li><li><a class="l" href="#pf2d" data-dest-detail='[45,"XYZ",28.346,228.21,null]'>std::shared_ptr</a></li><li><a class="l" href="#pf30" data-dest-detail='[48,"XYZ",28.346,200.601,null]'>std::weak_ptr</a></li></ul></li><li><a class="l" href="#pf33" data-dest-detail='[51,"XYZ",28.346,255.118,null]'>Concurrency</a><ul><li><a class="l" href="#pf36" data-dest-detail='[54,"XYZ",28.346,228.21,null]'>Thread Methods</a></li><li><a class="l" href="#pf39" data-dest-detail='[57,"XYZ",28.346,228.21,null]'>Mutex</a></li><li><a class="l" href="#pf3d" data-dest-detail='[61,"XYZ",28.346,228.21,null]'>Atomic</a></li><li><a class="l" href="#pf3e" data-dest-detail='[62,"XYZ",28.346,228.21,null]'>Task-based parallelism</a></li></ul></li></ul></div>
|
||
</div>
|
||
<div id="page-container">
|
||
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">Mo<span class="_ _0"></span>dern<span class="_ _1"> </span>C++</div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">Programming</div><div class="t m0 x2 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0">22.<span class="_ _2"> </span>Ad<span class="_ _3"></span>v<span class="_ _4"></span>anced<span class="_ _5"> </span>Topics<span class="_ _5"> </span>I<span class="_ _0"></span>I</div><div class="t m0 x1 h4 y4 ff3 fs2 fc0 sc0 ls0 ws0">F<span class="_ _3"></span>ederico<span class="_ _6"> </span>Busato</div><div class="t m0 x3 h5 y5 ff4 fs3 fc0 sc0 ls0 ws0">2026-01-06</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _8"> </span>Contents</div><div class="t m0 x5 h7 y7 ff1 fs3 fc2 sc0 ls0 ws0">1<span class="_ _9"> </span><span class="fs4 fc0">Undefined<span class="_ _a"> </span>Behavio<span class="_ _3"></span>r</span></div><div class="t m0 x6 h5 y8 ff4 fs3 fc0 sc0 ls0 ws0">Illegal<span class="_ _b"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x6 h5 y9 ff4 fs3 fc0 sc0 ls0 ws0">Platfo<span class="_ _3"></span>rm<span class="_ _b"> </span>Sp<span class="_ _c"></span>ecific<span class="_ _b"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x6 h5 ya ff4 fs3 fc0 sc0 ls0 ws0">Unsp<span class="_ _c"></span>ecified<span class="_ _b"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x6 h5 yb ff4 fs3 fc0 sc0 ls0 ws0">Detecting<span class="_ _b"> </span>Undefined<span class="_ _b"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">1/58</div><a class="l" href="#pf5" data-dest-detail='[5,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:151.106000px;width:130.549000px;height:13.781000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf7" data-dest-detail='[7,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:131.792000px;width:65.505000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pfa" data-dest-detail='[10,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:112.589000px;width:112.882000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pfb" data-dest-detail='[11,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:93.386000px;width:88.792000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pfd" data-dest-detail='[13,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:74.183000px;width:126.539000px;height:10.849000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _8"> </span>Contents</div><div class="t m0 x5 h7 yd ff1 fs3 fc2 sc0 ls0 ws0">2<span class="_ _9"> </span><span class="fs4 fc0">Erro<span class="_ _3"></span>r<span class="_ _a"> </span>Handing</span></div><div class="t m0 x6 h5 ye ff4 fs3 fc0 sc0 ls0 ws0">Recoverable<span class="_ _b"> </span>Erro<span class="_ _3"></span>r<span class="_ _b"> </span>Handing</div><div class="t m0 x6 h5 yf ff4 fs3 fc0 sc0 ls0 ws0">Return<span class="_ _b"> </span>Co<span class="_ _c"></span>de</div><div class="t m0 x6 h5 y10 ff4 fs3 fc0 sc0 ls0 ws0">C++<span class="_ _b"> </span>Exceptions</div><div class="t m0 x6 h5 y11 ff4 fs3 fc0 sc0 ls0 ws0">Defining<span class="_ _b"> </span>Custom<span class="_ _b"> </span>Exceptions</div><div class="t m0 x6 h5 y12 ff6 fs3 fc0 sc0 ls0 ws0">noexcept<span class="_ _b"> </span><span class="ff4">Keyw<span class="_ _3"></span>ord</span></div><div class="t m0 x6 h5 y13 ff4 fs3 fc0 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _b"> </span>Allo<span class="_ _c"></span>cation<span class="_ _b"> </span>Issues</div><div class="t m0 x6 h5 y14 ff4 fs3 fc0 sc0 ls0 ws0">Return<span class="_ _b"> </span>Co<span class="_ _c"></span>de<span class="_ _b"> </span>and<span class="_ _b"> </span>Exception<span class="_ _b"> </span>Summa<span class="_ _3"></span>ry</div><div class="t m0 x6 h9 y15 ff6 fs3 fc0 sc0 ls0 ws0">std::expected</div><div class="t m0 x6 h5 y16 ff4 fs3 fc0 sc0 ls0 ws0">Alternative<span class="_ _b"> </span>Erro<span class="_ _3"></span>r<span class="_ _b"> </span>Handling<span class="_ _b"> </span>Approaches</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">2/58</div><a class="l" href="#pff" data-dest-detail='[15,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:199.353000px;width:94.566000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf10" data-dest-detail='[16,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:181.003000px;width:113.587000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf12" data-dest-detail='[18,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:163.737000px;width:54.669000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf13" data-dest-detail='[19,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:142.597000px;width:71.648000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf1a" data-dest-detail='[26,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:123.394000px;width:119.551000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf1b" data-dest-detail='[27,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:103.971000px;width:82.883000px;height:11.068000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf1d" data-dest-detail='[29,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:84.988000px;width:108.178000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf21" data-dest-detail='[33,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:65.785000px;width:159.387000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf22" data-dest-detail='[34,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:46.362000px;width:69.987000px;height:10.123000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf24" data-dest-detail='[36,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:27.379000px;width:162.889000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>able<span class="_ _8"> </span>of<span class="_ _8"> </span>Contents</div><div class="t m0 x5 h7 y17 ff1 fs3 fc2 sc0 ls0 ws0">3<span class="_ _9"> </span><span class="fs4 fc0">Sma<span class="_ _3"></span>rt<span class="_ _a"> </span>p<span class="_ _c"></span>ointers</span></div><div class="t m0 x6 h9 y18 ff6 fs3 fc0 sc0 ls0 ws0">std::unique_ptr</div><div class="t m0 x6 h9 y19 ff6 fs3 fc0 sc0 ls0 ws0">std::shared_ptr</div><div class="t m0 x6 h9 y1a ff6 fs3 fc0 sc0 ls0 ws0">std::weak_ptr</div><div class="t m0 x5 h7 y1b ff1 fs3 fc2 sc0 ls0 ws0">4<span class="_ _9"> </span><span class="fs4 fc0">Concurrency</span></div><div class="t m0 x6 h5 y1c ff4 fs3 fc0 sc0 ls0 ws0">Thread<span class="_ _b"> </span>Metho<span class="_ _c"></span>ds</div><div class="t m0 x6 h5 y1d ff4 fs3 fc0 sc0 ls0 ws0">Mutex</div><div class="t m0 x6 h5 y1e ff4 fs3 fc0 sc0 ls0 ws0">A<span class="_ _3"></span>tomic</div><div class="t m0 x6 h5 y1f ff4 fs3 fc0 sc0 ls0 ws0">T<span class="_ _d"></span>ask-based<span class="_ _b"> </span>pa<span class="_ _3"></span>rallelism</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">3/58</div><a class="l" href="#pf26" data-dest-detail='[38,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:196.763000px;width:99.299000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf29" data-dest-detail='[41,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:178.192000px;width:80.448000px;height:10.123000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf2d" data-dest-detail='[45,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:158.989000px;width:80.448000px;height:10.123000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf30" data-dest-detail='[48,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:139.786000px;width:69.987000px;height:10.123000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf33" data-dest-detail='[51,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:108.504000px;width:83.328000px;height:14.744000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf36" data-dest-detail='[54,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:92.090000px;width:71.122000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf39" data-dest-detail='[57,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:72.887000px;width:28.476000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3d" data-dest-detail='[61,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:53.684000px;width:31.659000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf3e" data-dest-detail='[62,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:32.544000px;width:94.922000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y20 ff1 fs0 fc0 sc0 ls0 ws0">Undefined<span class="_ _1"> </span>Behavio<span class="_ _d"></span>r</div><a class="l" href="#pf5" data-dest-detail='[5,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:137.252000px;width:224.109000px;height:19.206000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf6" class="pf w0 h0" data-page-no="6"><div class="pc pc6 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Undefined<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _8"> </span>Overview</div><div class="t m0 x1 ha y21 ff1 fs6 fc0 sc0 ls0 ws0">Undefined<span class="_ _6"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r<span class="_ _e"> </span><span class="ff4">means<span class="_ _e"> </span>that<span class="_ _b"> </span>the<span class="_ _e"> </span>semantic<span class="_ _e"> </span>of<span class="_ _e"> </span>certain<span class="_ _b"> </span>op<span class="_ _c"></span>erations<span class="_ _e"> </span>is</span></div><div class="t m0 x9 h5 y22 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Unsp<span class="_ _c"></span>ecified<span class="_ _b"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r<span class="_ _f"></span><span class="ff4">:<span class="_ _8"> </span>outside<span class="_ _b"> </span>the<span class="_ _b"> </span>language/libra<span class="_ _3"></span>ry<span class="_ _b"> </span>specification,<span class="_ _b"> </span>tw<span class="_ _3"></span>o<span class="_ _b"> </span>or<span class="_ _b"> </span>mo<span class="_ _3"></span>re<span class="_ _b"> </span>choices</span></span></div><div class="t m0 x9 h5 y23 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Illegal<span class="_ _f"></span><span class="ff4">:<span class="_ _8"> </span>the<span class="_ _b"> </span>compiler<span class="_ _b"> </span>presumes<span class="_ _b"> </span>that<span class="_ _b"> </span>such<span class="_ _b"> </span>operations<span class="_ _b"> </span>never<span class="_ _b"> </span>happ<span class="_ _c"></span>en,<span class="_ _b"> </span>e.g.<span class="_ _8"> </span>integer<span class="_ _b"> </span>overflo<span class="_ _3"></span>w</span></span></div><div class="t m0 x9 h5 y24 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Implementation-defined<span class="_ _b"> </span>behavior<span class="_ _0"></span><span class="ff4">:<span class="_ _8"> </span>dep<span class="_ _c"></span>ends<span class="_ _10"> </span>on<span class="_ _10"> </span>the<span class="_ _10"> </span>compiler<span class="_ _b"> </span>and/o<span class="_ _3"></span>r<span class="_ _10"> </span>platform<span class="_ _10"> </span>(not<span class="_ _10"> </span>p<span class="_ _c"></span>o<span class="_ _3"></span>rtable)</span></span></div><div class="t m0 x1 ha y25 ff4 fs6 fc0 sc0 ls0 ws0">Motivations<span class="_ _e"> </span>behind<span class="_ _e"> </span>undefined<span class="_ _e"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r:</div><div class="t m0 x9 h5 y26 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Compiler<span class="_ _b"> </span>optimizations<span class="ff4">,<span class="_ _b"> </span>e.g.<span class="_ _8"> </span>signed<span class="_ _b"> </span>overflow<span class="_ _b"> </span>o<span class="_ _3"></span>r<span class="_ _b"> </span>NULL<span class="_ _b"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>dereferencing</span></span></div><div class="t m0 x9 h5 y27 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Simplify<span class="_ _b"> </span>compile<span class="_ _b"> </span>checks</span></div><div class="t m0 x9 h5 y28 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff8">Unfeasible/exp<span class="_ _c"></span>ensive<span class="_ _e"> </span><span class="ff4">to<span class="_ _b"> </span>check</span></span></div><div class="t m0 x9 hb y29 ff9 fs7 fc3 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffa">What<span class="_ _11"> </span>Every<span class="_ _11"> </span>C<span class="_ _8"> </span>Programmer<span class="_ _11"> </span>Should<span class="_ _11"> </span>Know<span class="_ _8"> </span>About<span class="_ _11"> </span>Undefined<span class="_ _8"> </span>Behavior<span class="ffb">,<span class="_ _b"> </span><span class="ffc">Chris<span class="_ _10"> </span>Lattner</span></span></span></div><div class="t m0 x9 hb y2a ff9 fs7 fc3 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffa">What<span class="_ _11"> </span>are<span class="_ _11"> </span>all<span class="_ _8"> </span>the<span class="_ _11"> </span>common<span class="_ _11"> </span>undefined<span class="_ _8"> </span>behaviors<span class="_ _11"> </span>that<span class="_ _8"> </span>a<span class="_ _11"> </span>C++<span class="_ _11"> </span>programmer<span class="_ _8"> </span>should<span class="_ _11"> </span>know</span></div><div class="t m0 x6 hc y2b ffa fs7 fc3 sc0 ls0 ws0">about?</div><div class="t m0 x9 hb y2c ff9 fs7 fc3 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffa">Enumerating<span class="_ _11"> </span>Core<span class="_ _11"> </span>Undefined<span class="_ _8"> </span>Behavior</span></div><div class="t m0 x9 hb y2d ff9 fs7 fc3 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffa">C++<span class="_ _11"> </span>programmer’s<span class="_ _11"> </span>guide<span class="_ _8"> </span>to<span class="_ _11"> </span>undefined<span class="_ _11"> </span>behavior</span></div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">4/58</div><a class="l" href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:51.045000px;width:341.760000px;height:10.212000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that-a-c-programmer-should-know-a"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:39.438000px;width:377.025000px;height:9.366000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that-a-c-programmer-should-know-a"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:28.828000px;width:30.237000px;height:7.373000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1705r1.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:15.229000px;width:166.750000px;height:9.366000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://pvs-studio.com/en/blog/posts/cpp/1215/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:3.623000px;width:209.116000px;height:9.365000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf7" class="pf w0 h0" data-page-no="7"><div class="pc pc7 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Illegal<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _12"> </span>1/3</div><div class="t m0 x9 ha y2e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">const_cast<span class="_ _14"> </span><span class="ff1">applied<span class="_ _6"> </span>to<span class="_ _e"> </span>a<span class="_ _14"> </span></span>const<span class="_ _14"> </span><span class="ff1">variables</span></span></div><div class="t m0 x6 hc y2f ff6 fs7 fc4 sc0 ls0 ws0">const<span class="_ _11"> </span><span class="fc5">int<span class="_ _15"> </span><span class="ffa fc0">var<span class="_ _16"> </span><span class="fc6">=<span class="_ _11"> </span>3</span>;</span></span></div><div class="t m0 x6 hc y30 ff6 fs7 fc4 sc0 ls0 ws0">const_cast<span class="ffa fc6"><</span><span class="fc5">int<span class="ffa fc6">&><span class="fc0">(var)<span class="_ _11"> </span></span>=<span class="_ _8"> </span>4<span class="fc0">;</span></span></span></div><div class="t m0 x6 hc y31 ffa fs7 fc0 sc0 ls0 ws0">...<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>use<span class="_ _11"> </span>var</span></div><div class="t m0 x9 ha y32 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Memory<span class="_ _e"> </span>alignment</span></div><div class="t m0 x6 hc y33 ff6 fs7 fc5 sc0 ls0 ws0">char<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc0">ptr<span class="_ _1"> </span></span>=<span class="_ _11"> </span></span><span class="fc4">new<span class="_ _11"> </span></span>char<span class="ffa fc0">[<span class="fc6">512</span>];</span></div><div class="t m0 x6 hc y34 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _16"> </span><span class="ffa fc0">ptr2<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span></span>reinterpret_cast<span class="ffa fc6"><</span><span class="fc5">uint64_t<span class="ffa fc6">*><span class="fc0">(ptr<span class="_ _11"> </span></span>+<span class="_ _11"> </span>1<span class="fc0">);</span></span></span></div><div class="t m0 x6 hc y35 ffa fs7 fc0 sc0 ls0 ws0">ptr2[<span class="fc6">3</span>];<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _1"> </span>ptr2<span class="_ _11"> </span>is<span class="_ _11"> </span>not<span class="_ _8"> </span>aligned<span class="_ _11"> </span>to<span class="_ _8"> </span>8<span class="_ _11"> </span>bytes<span class="_ _11"> </span>(sizeof(uint64_t))</span></div><div class="t m0 x9 ha y36 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Memory<span class="_ _e"> </span>initialization</span></div><div class="t m0 x6 hc y37 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _16"> </span><span class="ffa fc0">var;<span class="_ _17"> </span><span class="ffd fc7">//<span class="_ _11"> </span>undefined<span class="_ _8"> </span>value</span></span></div><div class="t m0 x6 hc y38 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">var2<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span></span>new<span class="_ _11"> </span><span class="fc5">int<span class="ffa fc0">;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _11"> </span>undefined<span class="_ _8"> </span>value</span></span></span></div><div class="t m0 x9 ha y39 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Memory<span class="_ _e"> </span>access-related<span class="ff4">:<span class="_ _11"> </span><span class="ff8">Out-of-b<span class="_ _c"></span>ound<span class="_ _b"> </span>access:<span class="_"> </span></span>the<span class="_ _b"> </span>co<span class="_ _c"></span>de<span class="_ _e"> </span>could<span class="_ _e"> </span>crash<span class="_ _b"> </span>or<span class="_ _b"> </span>not</span></span></div><div class="t m0 x6 ha y3a ff4 fs6 fc0 sc0 ls0 ws0">dep<span class="_ _c"></span>ending<span class="_ _b"> </span>on<span class="_ _e"> </span>the<span class="_ _e"> </span>platfo<span class="_ _3"></span>rm/compiler</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">5/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf8" class="pf w0 h0" data-page-no="8"><div class="pc pc8 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Illegal<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _12"> </span>2/3</div><div class="t m0 x9 ha y2e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Strict<span class="_ _6"> </span>aliasing</span></div><div class="t m0 x6 hc y3b ff6 fs7 fc5 sc0 ls0 ws0">float<span class="_ _11"> </span><span class="ffa fc0">x<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span>3</span>;</span></div><div class="t m0 x6 hc y3c ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _16"> </span><span class="ffa fc0">y<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span></span>reinterpret_cast<span class="ffa fc6"><</span><span class="fc5">unsigned<span class="ffa fc6">&><span class="fc0">(x);</span></span></span></div><div class="t m0 x6 hc y3d ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>x,<span class="_ _8"> </span>y<span class="_ _11"> </span>break<span class="_ _11"> </span>the<span class="_ _8"> </span>strict<span class="_ _11"> </span>aliasing<span class="_ _8"> </span>rule</div><div class="t m0 x9 ha y3e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Lifetime<span class="_ _6"> </span>issues</span></div><div class="t m0 x6 hc y3f ff6 fs7 fc5 sc0 ls0 ws0">int<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc8">f<span class="fc0">()<span class="_ _8"> </span>{</span></span></span></div><div class="t m0 xa hc y40 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">tmp[<span class="fc6">10</span>];</span></div><div class="t m0 xa hc y41 ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fc0">tmp;</span></div><div class="t m0 x6 hc y42 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x6 hc y43 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc0">ptr<span class="_ _8"> </span></span>=<span class="_ _11"> </span><span class="fc0">f();</span></span></div><div class="t m0 x6 hc y44 ffa fs7 fc0 sc0 ls0 ws0">ptr[<span class="fc6">0</span>];</div><div class="t m0 x9 ha y45 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">One<span class="_ _6"> </span>Definition<span class="_ _6"> </span>Rule<span class="_ _e"> </span>violation</span></div><div class="t m0 xb ha y46 ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Different<span class="_ _e"> </span>definitions<span class="_ _b"> </span>of<span class="_ _14"> </span><span class="ffe">inline<span class="_ _18"> </span></span>functions<span class="_ _e"> </span>in<span class="_ _b"> </span>distinct<span class="_ _e"> </span>translation<span class="_ _e"> </span>units</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">6/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf9" class="pf w0 h0" data-page-no="9"><div class="pc pc9 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Illegal<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _12"> </span>3/3</div><div class="t m0 x9 ha y2e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Missing<span class="_ _14"> </span><span class="ff6">return<span class="_ _14"> </span></span>statement</span></div><div class="t m0 x6 hc y47 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">f<span class="fc0">(</span></span>float<span class="_ _8"> </span><span class="ffa fc0">x)<span class="_ _11"> </span>{</span></div><div class="t m0 xa hc y48 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">y<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>x<span class="_ _11"> </span><span class="fc6">*<span class="_ _8"> </span>2</span>;</span></div><div class="t m0 x6 hc y49 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x9 ha y4a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Dangling<span class="_ _6"> </span>reference</span></div><div class="t m0 x6 hc y4b ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _15"> </span><span class="ffa fc0">n<span class="_ _11"> </span><span class="fc6">=<span class="_ _11"> </span>1</span>;</span></div><div class="t m0 x6 hc y4c ff6 fs7 fc4 sc0 ls0 ws0">const<span class="_ _11"> </span><span class="fc5">int<span class="ffa fc6">&<span class="_ _8"> </span><span class="fc0">r<span class="_ _11"> </span></span>=<span class="_ _11"> </span><span class="fc0">std</span>::<span class="fc0">max(n</span>-1<span class="fc0">,<span class="_ _8"> </span>n</span>+1<span class="fc0">);<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>dangling</span></span></span></span></div><div class="t m0 x6 hc y4d ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>GCC<span class="_ _8"> </span>13<span class="_ _11"> </span>experimental<span class="_ _11"> </span>-Wdangling-reference<span class="_ _8"> </span>(enabled<span class="_ _11"> </span>by<span class="_ _8"> </span>-Wall)</div><div class="t m0 x6 h5 y4e ff4 fs3 fc0 sc0 ls0 ws0">Sta<span class="_ _3"></span>rting<span class="_ _b"> </span>from<span class="_ _b"> </span><span class="fc9">C++26</span>,<span class="_ _b"> </span>it<span class="_ _b"> </span>is<span class="_ _b"> </span>disallow<span class="_ _3"></span>ed<span class="_ _b"> </span>to<span class="_ _b"> </span>bind<span class="_ _b"> </span>a<span class="_ _b"> </span>returned<span class="_ _b"> </span>reference<span class="_ _b"> </span>to<span class="_ _b"> </span>a<span class="_ _b"> </span>temp<span class="_ _c"></span>o<span class="_ _3"></span>rary</div><div class="t m0 x9 ha y4f ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Illegal<span class="_ _6"> </span>arithmetic<span class="_ _e"> </span>and<span class="_ _6"> </span>conversion<span class="_ _6"> </span>op<span class="_ _c"></span>erations</span></div><div class="t m0 xb ha y50 ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Division<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span>zero<span class="_ _18"> </span><span class="ffe">0<span class="_"> </span>/<span class="_"> </span>0<span class="_ _10"> </span></span>,<span class="_ _14"> </span><span class="ffe">fp_value<span class="_"> </span>/<span class="_"> </span>0.0</span></div><div class="t m0 xb ha y51 ff4 fs6 fc0 sc0 ls0 ws0">-<span class="_"> </span>Out-of-range<span class="_ _e"> </span>floating-point<span class="_ _e"> </span>to<span class="_ _e"> </span>integer<span class="_ _e"> </span>conversion</div><div class="t m0 xc hc y52 ffa fs7 fc3 sc0 ls0 ws0">C++26:<span class="_ _16"> </span>Disallow<span class="_ _11"> </span>Binding<span class="_ _8"> </span>a<span class="_ _11"> </span>Returned<span class="_ _11"> </span>Reference<span class="_ _8"> </span>to<span class="_ _11"> </span>a<span class="_ _8"> </span>Temporary</div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">7/58</div><a class="l" href="https://www.sandordargo.com/blog/2025/06/11/cpp26-no-binding-to-returned-reference-to-temporary"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:2.717000px;width:284.433000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pfa" class="pf w0 h0" data-page-no="a"><div class="pc pca w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Platfo<span class="_ _3"></span>rm<span class="_ _8"> </span>Sp<span class="_ _c"></span>ecific<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 xc ha y53 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Memory<span class="_ _e"> </span>access-related<span class="ff4">:<span class="_ _5"> </span><span class="ffe">NULL<span class="_ _14"> </span><span class="ff8">pointer<span class="_ _e"> </span>dereferencing<span class="_ _f"></span></span></span>:<span class="_ _11"> </span>the<span class="_ _18"> </span><span class="ffe">0x0<span class="_ _18"> </span></span>address<span class="_ _e"> </span>is<span class="_ _e"> </span>valid</span></span></div><div class="t m0 x6 ha y54 ff4 fs6 fc0 sc0 ls0 ws0">in<span class="_ _e"> </span>some<span class="_ _b"> </span>platforms</div><div class="t m0 xc ha y55 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Endianness</span></div><div class="t m0 x6 hc y56 ff6 fs7 fc4 sc0 ls0 ws0">union<span class="_ _11"> </span><span class="fc8">U<span class="_ _8"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 xa hc y57 ff6 fs7 fc5 sc0 ls0 ws0">unsigned<span class="_ _11"> </span><span class="ffa fc0">x;</span></div><div class="t m0 xa hc y58 ff6 fs7 fc5 sc0 ls0 ws0">char<span class="_ _19"> </span><span class="ffa fc0">y;</span></div><div class="t m0 x6 hc y59 ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xc ha y5a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">T<span class="_ _d"></span>yp<span class="_ _c"></span>e<span class="_ _e"> </span>definition</span></div><div class="t m0 x6 hc y5b ff6 fs7 fc5 sc0 ls0 ws0">long<span class="_ _11"> </span><span class="ffa fc0">x<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span>1ul<span class="_ _11"> </span><<<span class="_ _8"> </span>32u</span>;<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>different<span class="_ _11"> </span>behavior<span class="_ _11"> </span>depending<span class="_ _8"> </span>on<span class="_ _11"> </span>the<span class="_ _11"> </span>OS</span></span></div><div class="t m0 xc ha y5c ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Intrinsic<span class="_ _6"> </span>functions</span></div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">8/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pfb" class="pf w0 h0" data-page-no="b"><div class="pc pcb w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Unsp<span class="_ _c"></span>ecified<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _1a"> </span>1/2</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">Legal<span class="_ _e"> </span>operations<span class="_ _e"> </span>but<span class="_ _e"> </span>the<span class="_ _e"> </span>C++<span class="_ _b"> </span>standard<span class="_ _b"> </span>do<span class="_ _c"></span>es<span class="_ _e"> </span>not<span class="_ _e"> </span>document<span class="_ _e"> </span>the<span class="_ _e"> </span>result<span class="_ _e"> </span><span class="fff">→<span class="_ _b"> </span></span>different</div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">compilers/platfo<span class="_ _3"></span>rms<span class="_ _e"> </span>can<span class="_ _e"> </span>sho<span class="_ _3"></span>w<span class="_ _e"> </span>different<span class="_ _e"> </span>behavior</div><div class="t m0 xc ha y5e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Signed<span class="_ _e"> </span>shift<span class="_ _e"> </span>of<span class="_ _e"> </span>negative<span class="_ _b"> </span>values<span class="_ _14"> </span><span class="ffe">-2<span class="_"> </span><span class="fff">≪<span class="_ _1b"> </span></span>x<span class="_ _18"> </span></span>(b<span class="_ _c"></span>efo<span class="_ _3"></span>re<span class="_ _e"> </span><span class="fc9">C++20</span>),<span class="_ _e"> </span>la<span class="_ _3"></span>rge-than-type<span class="_ _e"> </span>shift</span></div><div class="t m0 xd ha y5f ffe fs6 fc0 sc0 ls0 ws0">3u<span class="_"> </span><span class="fff">≪<span class="_ _1b"> </span></span>32<span class="_ _10"> </span><span class="ff4">,<span class="_ _e"> </span>etc.</span></div><div class="t m0 xc ha y60 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Floating-p<span class="_ _c"></span>oint<span class="_ _e"> </span>na<span class="_ _3"></span>rrowing<span class="_ _b"> </span>conversion<span class="_ _e"> </span>to<span class="_ _e"> </span>floating-point<span class="_ _e"> </span>or<span class="_ _b"> </span>integer<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>es<span class="_ _e"> </span>with</span></div><div class="t m0 x6 ha y61 ff4 fs6 fc0 sc0 ls0 ws0">unrep<span class="_ _3"></span>resentable<span class="_ _e"> </span>values<span class="_ _18"> </span><span class="ffe">double<span class="_"> </span><span class="fff">→<span class="_ _1c"> </span></span>float<span class="_ _10"> </span></span>,<span class="_ _18"> </span><span class="ffe">float<span class="_"> </span><span class="fff">→<span class="_ _1c"> </span></span>int</span></div><div class="t m0 xc ha y62 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Arithmetic<span class="_ _e"> </span>op<span class="_ _c"></span>eration<span class="_ _e"> </span>o<span class="_ _3"></span>rdering<span class="_ _18"> </span><span class="ffe">f(i++,<span class="_"> </span>i++)</span></span></div><div class="t m0 xc ha y63 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Function<span class="_ _b"> </span>evaluation<span class="_ _e"> </span>ordering</span></div><div class="t m0 x6 hc y64 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">x<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>f()<span class="_ _11"> </span><span class="fc6">+<span class="_ _8"> </span></span>g();<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>C++<span class="_ _11"> </span>doesn<span class="ff10">'</span>t<span class="_ _11"> </span>ensure<span class="_ _8"> </span>that<span class="_ _11"> </span>f()<span class="_ _11"> </span>is<span class="_ _8"> </span>evaluated<span class="_ _11"> </span>before<span class="_ _8"> </span>g()</span></span></div><div class="t m0 x7 h8 yc ff5 fs5 fc0 sc0 ls0 ws0">9/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pfc" class="pf w0 h0" data-page-no="c"><div class="pc pcc w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAI3klEQVR42u3bv0nDQRjH4Zz8XqwOZxArJxCxFrKChfO4hBtYOINg4RBuYBWuUN8mdoKN5o+Bu+R5BgjHN82Hu6ScXVzNAACgG68vz0dWAACgNyIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAIBvJTOtAABAPyLCTSoAAN0RqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAAB2ZTLC61poRAIBB1VoHOq2bVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEA4IeSmVYAAKAfETFZYddaa1t+Qq21q/MM7X/HBAB2xHM/AAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAHJjJBLtWazUCAMBa3KQCACBSAQDgLyUzrQAAQD8iwm9SAWBvtdaM8Av/G+mZ534AAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAYC0lM60AAEA/IsJNKgAA3RGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAGBMkwlW11ozAgAwqFrrQKd1kwoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAwNZKZloBAIB+RISbVAAAuiNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAALCpaZSDvn98zG9ufWEwlqfHByMAsIGSmVYAAKAfEeG5HwCA7ohUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAODDT4u7UCnvm7freCADAuM4v56WcHC8Xn7PZcrk0CAAAXfgCJko4I4+LD90AAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Unsp<span class="_ _c"></span>ecified<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r<span class="_ _1a"> </span>2/2</div><div class="t m0 xc ha y2e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Signed<span class="_ _e"> </span>overflow</span></div><div class="t m0 x6 hc y47 ff6 fs7 fc4 sc0 ls0 ws0">for<span class="_ _11"> </span><span class="ffa fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ffa fc0">i<span class="_ _11"> </span><span class="fc6">=<span class="_ _11"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _11"> </span><span class="fc6"><=<span class="_ _8"> </span></span>N;<span class="_ _11"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x6 h5 y65 ff4 fs3 fc0 sc0 ls0 ws0">if<span class="_ _18"> </span><span class="ffe">N<span class="_ _1c"> </span></span>is<span class="_ _18"> </span><span class="ffe">INT_MAX<span class="_ _10"> </span></span>,<span class="_ _b"> </span>the<span class="_ _b"> </span>last<span class="_ _b"> </span>iteration<span class="_ _b"> </span>is<span class="_ _b"> </span>undefined<span class="_ _b"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r.<span class="_ _8"> </span>The<span class="_ _b"> </span>compiler<span class="_ _b"> </span>can<span class="_ _b"> </span>assume<span class="_ _b"> </span>that</div><div class="t m0 x6 h5 y66 ff4 fs3 fc0 sc0 ls0 ws0">the<span class="_ _b"> </span>lo<span class="_ _c"></span>op<span class="_ _10"> </span>is<span class="_ _b"> </span>finite<span class="_ _b"> </span>and<span class="_ _b"> </span>enable<span class="_ _b"> </span>imp<span class="_ _c"></span>ortant<span class="_ _10"> </span>optimizations,<span class="_ _b"> </span>as<span class="_ _b"> </span>opp<span class="_ _c"></span>osite<span class="_ _b"> </span>to<span class="_ _18"> </span><span class="ffe">unsigned<span class="_ _1c"> </span></span>(wrap</div><div class="t m0 x6 h5 y67 ff4 fs3 fc0 sc0 ls0 ws0">a<span class="_ _3"></span>round)</div><div class="t m0 xc ha y68 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">T<span class="_ _d"></span>rivial<span class="_ _e"> </span>infinite<span class="_ _e"> </span>loops,<span class="_ _e"> </span>until<span class="_ _e"> </span><span class="fc9">C++26</span></span></div><div class="t m0 x6 hc y69 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 xe hc y6a ff6 fs7 fc4 sc0 ls0 ws0">while<span class="_ _11"> </span><span class="ffa fc0">(<span class="fc4">true</span>)<span class="_ _1d"> </span><span class="ffd fc7">//<span class="_ _11"> </span>-><span class="_ _8"> </span>std::this_thread::yield();<span class="_ _11"> </span>in<span class="_ _11"> </span>C++26</span></span></div><div class="t m0 xa hc y6b ffa fs7 fc0 sc0 ls0 ws0">;</div><div class="t m0 x6 hc y6c ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x6 hc y6d ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">unreachable<span class="fc0">()<span class="_ _8"> </span>{<span class="_ _11"> </span>cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"Hello<span class="_ _11"> </span>world!"<span class="_ _8"> </span></span><<<span class="_ _11"> </span></span>endl;<span class="_ _11"> </span>}</span></span></div><div class="t m0 x6 h5 y6e ff4 fs3 fc0 sc0 ls0 ws0">the<span class="_ _b"> </span>co<span class="_ _c"></span>de<span class="_ _10"> </span>print<span class="_ _b"> </span><span class="ffe">Hello<span class="_"> </span>world!<span class="_ _8"> </span></span>with<span class="_ _b"> </span>some<span class="_ _b"> </span><span class="ffe">clang<span class="_ _b"> </span></span>versions</div><div class="t m0 xc hc y6f ffa fs7 fc3 sc0 ls0 ws0">P2809R3:<span class="_ _16"> </span>Trivial<span class="_ _11"> </span>infinite<span class="_ _8"> </span>loops<span class="_ _11"> </span>are<span class="_ _11"> </span>not<span class="_ _8"> </span>Undefined<span class="_ _11"> </span>Behavior</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">10/58</div><a class="l" href="https://isocpp.org/files/papers/P2809R3.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:-1.998000px;width:279.726000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pfd" class="pf w0 h0" data-page-no="d"><div class="pc pcd w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Detecting<span class="_ _8"> </span>Undefined<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x1 ha y70 ff4 fs6 fc0 sc0 ls0 ws0">There<span class="_ _e"> </span>a<span class="_ _3"></span>re<span class="_ _e"> </span>several<span class="_ _e"> </span>w<span class="_ _3"></span>a<span class="_ _3"></span>ys<span class="_ _e"> </span>to<span class="_ _e"> </span>detect<span class="_ _e"> </span>o<span class="_ _3"></span>r<span class="_ _e"> </span>p<span class="_ _3"></span>revent<span class="_ _e"> </span>undefined<span class="_ _e"> </span>behavior<span class="_ _b"> </span>at<span class="_ _e"> </span>compile-time<span class="_ _e"> </span>and<span class="_ _e"> </span>at</div><div class="t m0 x1 ha y71 ff4 fs6 fc0 sc0 ls0 ws0">run-time:</div><div class="t m0 xc ha y72 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Mo<span class="_ _c"></span>dify<span class="_ _e"> </span>the<span class="_ _e"> </span>compiler<span class="_ _b"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r,<span class="_ _e"> </span>see<span class="_ _e"> </span><span class="ffe">Debugging<span class="_"> </span>and<span class="_"> </span>Testing:<span class="_ _1e"> </span>Hardening</span></span></div><div class="t m0 x6 hd y73 ffe fs6 fc0 sc0 ls0 ws0">Techniques</div><div class="t m0 xc ha y74 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Using<span class="_ _e"> </span>undefined<span class="_ _e"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r<span class="_ _e"> </span>sanitizer,<span class="_ _b"> </span>see<span class="_ _e"> </span><span class="ffe">Debugging<span class="_"> </span>and<span class="_"> </span>Testing:<span class="_ _1e"> </span>Sanitizer</span></span></div><div class="t m0 xc ha y75 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Static<span class="_ _e"> </span>analysis<span class="_ _e"> </span>to<span class="_ _c"></span>ols</span></div><div class="t m0 xc ha y76 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">constexpr<span class="_ _18"> </span><span class="ff4">expressions<span class="_ _b"> </span>do<span class="_ _c"></span>esn’t<span class="_ _e"> </span>allo<span class="_ _3"></span>w<span class="_ _e"> </span>undefined<span class="_ _e"> </span>behavior</span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">11/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pfe" class="pf w0 h0" data-page-no="e"><div class="pc pce w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Detecting<span class="_ _8"> </span>Undefined<span class="_ _8"> </span>Behavio<span class="_ _3"></span>r</div><div class="t m0 x1 hc y77 ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x1<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span>2147483647<span class="_ _11"> </span>+<span class="_ _11"> </span>1</span>;<span class="_ _1d"> </span><span class="ffd fc7">//<span class="_ _11"> </span>compile<span class="_ _8"> </span>error</span></span></span></div><div class="t m0 x1 hc y78 ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x2<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span>(<span class="fc6">1<span class="_ _11"> </span><<<span class="_ _11"> </span>32</span>);<span class="_ _15"> </span><span class="ffd fc7">//<span class="_ _11"> </span>compile<span class="_ _8"> </span>error</span></span></span></div><div class="t m0 x1 hc y79 ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x3<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span>(<span class="fc6">1<span class="_ _11"> </span><<<span class="_ _11"> </span>-1</span>);<span class="_ _15"> </span><span class="ffd fc7">//<span class="_ _11"> </span>compile<span class="_ _8"> </span>error</span></span></span></div><div class="t m0 x1 hc y7a ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x4<span class="_ _11"> </span><span class="fc6">=<span class="_ _1"> </span>3<span class="_ _11"> </span>/<span class="_ _11"> </span>0</span>;<span class="_ _1f"> </span><span class="ffd fc7">//<span class="_ _11"> </span>compile<span class="_ _8"> </span>error</span></span></span></div><div class="t m0 x1 hc y7b ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x5<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span>*</span>((</span>int<span class="ffa fc6">*<span class="fc0">)<span class="_ _11"> </span></span></span></span>nullptr<span class="ffa fc0">)<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>compile<span class="_ _11"> </span>error</span></span></div><div class="t m0 x1 hc y7c ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">int<span class="_ _1d"> </span><span class="ffa fc0">x6<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span>6</span></span></span></div><div class="t m0 x1 hc y7d ff6 fs7 fc4 sc0 ls0 ws0">constexpr<span class="_ _11"> </span><span class="fc5">float<span class="_ _8"> </span><span class="ffa fc0">x7<span class="_ _11"> </span><span class="fc6">=<span class="_ _11"> </span></span></span></span>reinterpret_cast<span class="ffa fc6"><</span><span class="fc5">float<span class="ffa fc6">&><span class="fc0">(x6);<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _11"> </span>compile<span class="_ _8"> </span>error</span></span></span></span></div><div class="t m0 xc hc y7e ffa fs7 fc3 sc0 ls0 ws0">Exploring<span class="_ _11"> </span>Undefined<span class="_ _8"> </span>Behavior<span class="_ _11"> </span>Using<span class="_ _11"> </span>Constexpr</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">12/58</div><a class="l" href="https://shafik.github.io/c++/undefined%20behavior/2019/05/11/explporing_undefined_behavior_using_constexpr.html"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:2.741000px;width:209.116000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pff" class="pf w0 h0" data-page-no="f"><div class="pc pcf w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXElEQVR42u3ZsQ3CQBBE0TvEipAaLFGCO0DURhN06MihNzm34AivpfdKmOhL0zOzAQBAGRFxswIAANWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARKoJAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgBwMXcTcK71OxnhiOXzMwLwT6/5bQRO1DPTCgAA1BER7n4AAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAAEf0/nyMdWttjGENAABK2AGL6xP1kAIh/wAAAABJRU5ErkJggg=="/><div class="t m0 x8 h2 y20 ff1 fs0 fc0 sc0 ls0 ws0">Erro<span class="_ _d"></span>r<span class="_ _1"> </span>Handing</div><a class="l" href="#pff" data-dest-detail='[15,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:132.432000px;width:161.938000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf10" class="pf w0 h0" data-page-no="10"><div class="pc pc10 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Recoverable<span class="_ _8"> </span>Erro<span class="_ _3"></span>r<span class="_ _8"> </span>Handing</div><div class="t m0 x1 ha y7f ff1 fs6 fc0 sc0 ls0 ws0">Recoverable<span class="_ _e"> </span><span class="ff8">Conditions<span class="_ _b"> </span>that<span class="_ _e"> </span>are<span class="_ _b"> </span>not<span class="_ _e"> </span>under<span class="_ _e"> </span>the<span class="_ _b"> </span>control<span class="_ _e"> </span>of<span class="_ _e"> </span>the<span class="_ _e"> </span>p<span class="_ _3"></span>rogram<span class="ff4">.<span class="_ _11"> </span>They<span class="_ _e"> </span>indicate</span></span></div><div class="t m0 x1 ha y80 ff8 fs6 fc0 sc0 ls0 ws0">“exceptional”<span class="_ _8"> </span><span class="ff4">run-time<span class="_ _e"> </span>conditions.<span class="_ _11"> </span>e.g.<span class="_ _11"> </span>file<span class="_ _b"> </span>not<span class="_ _e"> </span>found,<span class="_ _e"> </span>bad<span class="_ _e"> </span>allocation,<span class="_ _e"> </span>wrong<span class="_ _e"> </span>user</span></div><div class="t m0 x1 ha y81 ff4 fs6 fc0 sc0 ls0 ws0">input,<span class="_ _e"> </span>etc.</div><div class="t m0 x1 ha y82 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _e"> </span><span class="ff8">recoverable<span class="_ _6"> </span></span>should<span class="_ _e"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>considered<span class="_ _e"> </span><span class="ff8">unrecoverable<span class="_ _6"> </span></span>if<span class="_ _e"> </span>it<span class="_ _e"> </span>is<span class="_ _e"> </span>extremely<span class="_ _e"> </span>ra<span class="_ _3"></span>re<span class="_ _e"> </span>and<span class="_ _b"> </span>difficult<span class="_ _e"> </span>to</div><div class="t m0 x1 ha y83 ff4 fs6 fc0 sc0 ls0 ws0">handle,<span class="_ _e"> </span>e.g.<span class="_ _11"> </span>bad<span class="_ _b"> </span>allo<span class="_ _c"></span>cation<span class="_ _e"> </span>due<span class="_ _b"> </span>to<span class="_ _e"> </span>out-of-memory<span class="_ _b"> </span>error</div><div class="t m0 x1 ha y84 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>common<span class="_ _b"> </span>wa<span class="_ _3"></span>ys<span class="_ _e"> </span>fo<span class="_ _3"></span>r<span class="_ _e"> </span>handling<span class="_ _e"> </span>recoverable<span class="_ _b"> </span>errors<span class="_ _b"> </span>are:</div><div class="t m0 x10 ha y85 ff1 fs6 fc0 sc0 ls0 ws0">Exceptions<span class="_ _a"> </span><span class="ff4">Robust<span class="_ _e"> </span>but<span class="_ _e"> </span>slo<span class="_ _3"></span>wer<span class="_ _b"> </span>and<span class="_ _e"> </span>requires<span class="_ _e"> </span>mo<span class="_ _3"></span>re<span class="_ _e"> </span>resources</span></div><div class="t m0 x11 ha y86 ff1 fs6 fc0 sc0 ls0 ws0">Return<span class="_ _6"> </span>co<span class="_ _c"></span>de<span class="_ _a"> </span><span class="ff4">F<span class="_ _3"></span>ast<span class="_ _e"> </span>but<span class="_ _e"> </span>difficult<span class="_ _e"> </span>to<span class="_ _b"> </span>handle<span class="_ _e"> </span>in<span class="_ _e"> </span>complex<span class="_ _e"> </span>p<span class="_ _3"></span>rograms</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">13/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf11" class="pf w0 h0" data-page-no="11"><div class="pc pc11 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Erro<span class="_ _3"></span>r<span class="_ _8"> </span>Handing<span class="_ _8"> </span>References</div><div class="t m0 xc ha y87 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">Modern<span class="_"> </span>C++<span class="_"> </span>best<span class="_"> </span>practices<span class="_"> </span>for<span class="_"> </span>exceptions<span class="_"> </span>and<span class="_"> </span>error<span class="_"> </span>handling</span></div><div class="t m0 xc ha y88 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">Back<span class="_"> </span>to<span class="_"> </span>Basics:<span class="_ _1e"> </span>Exceptions<span class="_"> </span>-<span class="_"> </span>CppCon2020</span></div><div class="t m0 xc ha y89 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">ISO<span class="_"> </span>C++<span class="_"> </span>FAQ:<span class="_"> </span>Exceptions<span class="_"> </span>and<span class="_"> </span>Error<span class="_"> </span>Handling</span></div><div class="t m0 xc ha y8a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">Zero-overhead<span class="_"> </span>deterministic<span class="_"> </span>exceptions:<span class="_ _1e"> </span>Throwing<span class="_"> </span>values,<span class="_"> </span>P0709</span></div><div class="t m0 xc ha y8b ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">C++<span class="_"> </span>exceptions<span class="_"> </span>are<span class="_"> </span>becoming<span class="_"> </span>more<span class="_"> </span>and<span class="_"> </span>more<span class="_"> </span>problematic,<span class="_"> </span>P2544</span></div><div class="t m0 xc ha y8c ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">std::expected</span></div><div class="t m0 xc ha y8d ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffe">C++<span class="_"> </span>Error<span class="_"> </span>Handling<span class="_"> </span>Strategies<span class="_"> </span>–<span class="_"> </span>Benchmarks<span class="_"> </span>and<span class="_"> </span>Performance</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">14/58</div><a class="l" href="https://docs.microsoft.com/en-us/cpp/cpp/errors-and-exception-handling-modern-cpp?view=msvc-160"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:187.508000px;width:339.901000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://raw.githubusercontent.com/CppCon/CppCon2020/main/Presentations/back_to_basics_exceptions/back_to_basics_exceptions__klaus_iglberger__cppcon_2020.pdf"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:163.957000px;width:231.083000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://isocpp.org/wiki/faq/exceptions"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:140.405000px;width:242.538000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0709r3.pdf"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:116.854000px;width:362.810000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2544r0.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:93.302000px;width:345.628000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0323r12.html"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:69.750000px;width:76.447000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://johnfarrier.com/c-error-handling-strategies-benchmarks-and-performance/"><div class="d m1" style="border-style:none;position:absolute;left:49.168000px;bottom:46.199000px;width:334.174000px;height:10.952000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf12" class="pf w0 h0" data-page-no="12"><div class="pc pc12 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Return<span class="_ _8"> </span>Co<span class="_ _c"></span>de</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">Histo<span class="_ _3"></span>rically<span class="_ _d"></span>,<span class="_ _e"> </span>C<span class="_ _b"> </span>programs<span class="_ _b"> </span>handled<span class="_ _e"> </span>errors<span class="_ _b"> </span>with<span class="_ _e"> </span>return<span class="_ _b"> </span>co<span class="_ _c"></span>des,<span class="_ _e"> </span>even<span class="_ _b"> </span>for<span class="_ _b"> </span>unrecoverable<span class="_ _e"> </span>erro<span class="_ _3"></span>rs</div><div class="t m0 x1 hc y8e ff6 fs7 fc4 sc0 ls0 ws0">enum<span class="_ _11"> </span><span class="fc8">Status<span class="_ _8"> </span><span class="ffa fc0">{<span class="_ _11"> </span>IllegalValue,<span class="_ _11"> </span>Success<span class="_ _8"> </span>};</span></span></div><div class="t m0 x1 hc y8f ffa fs7 fc0 sc0 ls0 ws0">Status<span class="_ _11"> </span><span class="fc8">f</span>(<span class="ff6 fc5">int</span><span class="fc6">*<span class="_ _8"> </span></span>ptr)<span class="_ _11"> </span>{<span class="_ _11"> </span><span class="ff6 fc4">return<span class="_ _8"> </span></span>(ptr<span class="_ _11"> </span><span class="fc6">==<span class="_ _8"> </span><span class="ff6 fc4">nullptr</span></span>)<span class="_ _11"> </span><span class="fc6">?<span class="_ _11"> </span></span>IllegalValue<span class="_ _8"> </span><span class="fc6">:<span class="_ _11"> </span></span>Success;<span class="_ _11"> </span>}</div><div class="t m0 x1 ha y90 ff4 fs6 fc0 sc0 ls0 ws0">Why<span class="_ _e"> </span>such<span class="_ _b"> </span>b<span class="_ _c"></span>ehavior?<span class="_ _8"> </span>Debugging<span class="_ _e"> </span><span class="fff">→<span class="_ _e"> </span></span>need<span class="_ _e"> </span>to<span class="_ _b"> </span>understand<span class="_ _e"> </span>what<span class="_ _e"> </span>/<span class="_ _e"> </span>where<span class="_ _b"> </span>/<span class="_ _e"> </span>why<span class="_ _e"> </span>the</div><div class="t m0 x1 ha y91 ff4 fs6 fc0 sc0 ls0 ws0">p<span class="_ _3"></span>rogram<span class="_ _e"> </span>failed</div><div class="t m0 x1 ha y92 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _e"> </span>better<span class="_ _e"> </span>approach<span class="_ _b"> </span>in<span class="_ _e"> </span>C++<span class="_ _e"> </span>involves<span class="_ _18"> </span><span class="ffe">std::source_location()<span class="_ _18"> </span></span><span class="fc9">C++20<span class="_ _e"> </span></span>and</div><div class="t m0 x11 ha y93 ffe fs6 fc0 sc0 ls0 ws0">std::stacktrace()<span class="_ _18"> </span><span class="ff4 fc9">C++23</span></div><div class="t m0 x1 ha y94 ff4 fs6 fc0 sc0 ls0 ws0">ABI<span class="_ _e"> </span>related<span class="_ _b"> </span>issues:</div><div class="t m0 x9 h5 y95 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Removing<span class="_ _b"> </span>an<span class="_ _b"> </span>enumerator<span class="_ _b"> </span>value<span class="_ _b"> </span>is<span class="_ _b"> </span>an<span class="_ _b"> </span>API<span class="_ _b"> </span>b<span class="_ _3"></span>reaking<span class="_ _b"> </span>change</span></div><div class="t m0 x9 h5 y96 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Adding<span class="_ _b"> </span>a<span class="_ _b"> </span>new<span class="_ _b"> </span>enumerato<span class="_ _3"></span>r<span class="_ _b"> </span>value<span class="_ _b"> </span>asso<span class="_ _c"></span>ciated<span class="_ _b"> </span>to<span class="_ _b"> </span>a<span class="_ _b"> </span>return<span class="_ _b"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _b"> </span>is<span class="_ _b"> </span>also<span class="_ _b"> </span>p<span class="_ _3"></span>roblematic<span class="_ _b"> </span>as<span class="_ _b"> </span>it</span></div><div class="t m0 x6 h5 y97 ff4 fs3 fc0 sc0 ls0 ws0">causes<span class="_ _b"> </span>ABI<span class="_ _b"> </span>b<span class="_ _3"></span>reaking<span class="_ _b"> </span>change</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">15/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf13" class="pf w0 h0" data-page-no="13"><div class="pc pc13 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">C++<span class="_ _8"> </span>Exceptions<span class="_ _8"> </span>-<span class="_ _8"> </span>A<span class="_ _3"></span>dvantages</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">C++<span class="_ _e"> </span>Exceptions<span class="_ _b"> </span>provide<span class="_ _b"> </span>a<span class="_ _e"> </span>well-defined<span class="_ _b"> </span>mechanism<span class="_ _e"> </span>to<span class="_ _e"> </span>detect<span class="_ _e"> </span>erro<span class="_ _3"></span>rs<span class="_ _e"> </span>passing<span class="_ _b"> </span>the</div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">info<span class="_ _3"></span>rmation<span class="_ _e"> </span>up<span class="_ _e"> </span>the<span class="_ _e"> </span>call<span class="_ _b"> </span>stack</div><div class="t m0 xc ha y98 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Exceptions<span class="_ _6"> </span>cannot<span class="_ _6"> </span>b<span class="_ _c"></span>e<span class="_ _6"> </span>igno<span class="_ _3"></span>red<span class="ff4">.<span class="_ _11"> </span>Unhandled<span class="_ _e"> </span>exceptions<span class="_ _e"> </span>stop<span class="_ _b"> </span>program<span class="_ _b"> </span>execution</span></span></div><div class="t m0 x6 ha y99 ff4 fs6 fc0 sc0 ls0 ws0">(call<span class="_ _18"> </span><span class="ffe">std::terminate()<span class="_ _10"> </span></span>)</div><div class="t m0 xc ha y9a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Intermediate<span class="_ _6"> </span>functions<span class="_ _6"> </span>are<span class="_ _e"> </span>not<span class="_ _6"> </span>fo<span class="_ _3"></span>rced<span class="_ _6"> </span>to<span class="_ _6"> </span>handle<span class="_ _6"> </span>them<span class="ff4">.<span class="_ _11"> </span>They<span class="_ _e"> </span>don’t<span class="_ _b"> </span>have<span class="_ _e"> </span>to</span></span></div><div class="t m0 x6 ha y9b ff4 fs6 fc0 sc0 ls0 ws0">co<span class="_ _c"></span>o<span class="_ _3"></span>rdinate<span class="_ _e"> </span>with<span class="_ _b"> </span>other<span class="_ _e"> </span>lay<span class="_ _3"></span>ers<span class="_ _e"> </span>and,<span class="_ _b"> </span>for<span class="_ _b"> </span>this<span class="_ _e"> </span>reason,<span class="_ _e"> </span>they<span class="_ _e"> </span>p<span class="_ _3"></span>rovide<span class="_ _e"> </span>goo<span class="_ _c"></span>d<span class="_ _e"> </span>comp<span class="_ _c"></span>osabilit<span class="_ _3"></span>y</div><div class="t m0 xc ha y9c ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Throwing<span class="_ _b"> </span>an<span class="_ _e"> </span>exception<span class="_ _b"> </span><span class="ff1">acts<span class="_ _6"> </span>lik<span class="_ _3"></span>e<span class="_ _6"> </span>a<span class="_ _e"> </span>return<span class="_ _6"> </span>statement<span class="_ _e"> </span><span class="ff4">destro<span class="_ _3"></span>ying<span class="_ _e"> </span>all<span class="_ _b"> </span>objects<span class="_ _e"> </span>in<span class="_ _b"> </span>the</span></span></span></div><div class="t m0 x6 ha y9d ff4 fs6 fc0 sc0 ls0 ws0">current<span class="_ _e"> </span>scope</div><div class="t m0 xc ha y9e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">An<span class="_ _e"> </span>exception<span class="_ _e"> </span>enables<span class="_ _e"> </span>a<span class="_ _b"> </span><span class="ff1">clean<span class="_ _6"> </span>separation<span class="_ _b"> </span></span>b<span class="_ _c"></span>et<span class="_ _3"></span>ween<span class="_ _b"> </span>the<span class="_ _e"> </span>co<span class="_ _c"></span>de<span class="_ _b"> </span>that<span class="_ _e"> </span>detects<span class="_ _e"> </span>the<span class="_ _e"> </span>erro<span class="_ _3"></span>r</span></div><div class="t m0 x6 ha y9f ff4 fs6 fc0 sc0 ls0 ws0">and<span class="_ _e"> </span>the<span class="_ _b"> </span>co<span class="_ _c"></span>de<span class="_ _e"> </span>that<span class="_ _e"> </span>handles<span class="_ _b"> </span>the<span class="_ _e"> </span>error</div><div class="t m0 xc ha ya0 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Exceptions<span class="_ _e"> </span>wo<span class="_ _3"></span>rk<span class="_ _e"> </span>w<span class="_ _3"></span>ell<span class="_ _e"> </span>with<span class="_ _b"> </span>object-oriented<span class="_ _b"> </span>semantic<span class="_ _e"> </span>(constructor)</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">16/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf14" class="pf w0 h0" data-page-no="14"><div class="pc pc14 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">C++<span class="_ _8"> </span>Exceptions<span class="_ _8"> </span>-<span class="_ _8"> </span>Disadvantages<span class="_ _20"> </span>1/2</div><div class="t m0 xc ha ya1 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Co<span class="_ _c"></span>de<span class="_ _6"> </span>readabilit<span class="_ _3"></span>y<span class="ff4">:<span class="_ _11"> </span>Using<span class="_ _e"> </span>exception<span class="_ _e"> </span>can<span class="_ _b"> </span>involve<span class="_ _e"> </span>more<span class="_ _b"> </span>co<span class="_ _c"></span>de<span class="_ _e"> </span>than<span class="_ _b"> </span>the<span class="_ _e"> </span>functionality</span></span></div><div class="t m0 x6 ha ya2 ff4 fs6 fc0 sc0 ls0 ws0">itself</div><div class="t m0 xc ha ya3 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Co<span class="_ _c"></span>de<span class="_ _6"> </span>comp<span class="_ _3"></span>rehension<span class="ff4">:<span class="_ _11"> </span>Exception<span class="_ _e"> </span>control<span class="_ _e"> </span>flo<span class="_ _3"></span>w<span class="_ _e"> </span>is<span class="_ _e"> </span>invisible<span class="_ _b"> </span>and<span class="_ _e"> </span>it<span class="_ _e"> </span>is<span class="_ _e"> </span>not<span class="_ _b"> </span>explicit<span class="_ _e"> </span>in</span></span></div><div class="t m0 x6 ha ya4 ff4 fs6 fc0 sc0 ls0 ws0">the<span class="_ _e"> </span>function<span class="_ _b"> </span>signature</div><div class="t m0 xc ha ya5 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Perfo<span class="_ _3"></span>rmance:<span class="_ _11"> </span><span class="ff4">Extreme<span class="_ _e"> </span>performance<span class="_ _b"> </span>overhead<span class="_ _e"> </span>in<span class="_ _e"> </span>the<span class="_ _e"> </span>failure<span class="_ _b"> </span>case<span class="_ _e"> </span>(violate<span class="_ _e"> </span>the</span></span></div><div class="t m0 x6 ha ya6 ff4 fs6 fc0 sc0 ls0 ws0">zero-overhead<span class="_ _e"> </span>p<span class="_ _3"></span>rinciple)</div><div class="t m0 xc ha ya7 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Dynamic<span class="_ _6"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>r<span class="_ _c"></span><span class="ff4">:<span class="_ _5"> </span><span class="ffe">throw<span class="_ _18"> </span></span>requires<span class="_ _e"> </span>dynamic<span class="_ _b"> </span>allo<span class="_ _c"></span>cation<span class="_ _e"> </span>and<span class="_ _18"> </span><span class="ffe">catch<span class="_ _14"> </span></span>requires</span></span></div><div class="t m0 x6 ha ya8 ffe fs6 fc0 sc0 ls0 ws0">RTTI<span class="ff4">.<span class="_ _e"> </span>It<span class="_ _b"> </span>is<span class="_ _e"> </span>not<span class="_ _e"> </span>suited<span class="_ _e"> </span>fo<span class="_ _3"></span>r<span class="_ _e"> </span>real-time,<span class="_ _e"> </span>safet<span class="_ _3"></span>y-critical,<span class="_ _e"> </span>o<span class="_ _3"></span>r<span class="_ _e"> </span>emb<span class="_ _c"></span>edded<span class="_ _b"> </span>systems</span></div><div class="t m0 xc ha ya9 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Co<span class="_ _c"></span>de<span class="_ _6"> </span>bloat<span class="ff4">:<span class="_ _11"> </span>Exceptions<span class="_ _e"> </span>could<span class="_ _b"> </span>increase<span class="_ _e"> </span>executable<span class="_ _e"> </span>size<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span>5-15%<span class="_ _e"> </span>(o<span class="_ _3"></span>r<span class="_ _e"> </span>mo<span class="_ _3"></span>re*)</span></span></div><div class="t m0 xc hb yaa ffb fs7 fc3 sc0 ls0 ws0">*<span class="ffa">Binary<span class="_ _11"> </span>size<span class="_ _8"> </span>and<span class="_ _11"> </span>exceptions</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">17/58</div><a class="l" href="https://www.sandordargo.com/blog/2023/03/29/binary-size-and-exceptions"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:1.593000px;width:128.992000px;height:13.444000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf15" class="pf w0 h0" data-page-no="15"><div class="pc pc15 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">C++<span class="_ _8"> </span>Exceptions<span class="_ _8"> </span>-<span class="_ _8"> </span>Disadvantages<span class="_ _20"> </span>2/2</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">18/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf16" class="pf w0 h0" data-page-no="16"><div class="pc pc16 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeklEQVR42u3YsQkCMRiG4T9ywepwBrFyAhFr4TZzCcexcAg3sDquMk3srCzEQnL4PBOEL83Lnza7QwAAQDNu18vCCgAAtEakAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAADwkkopVgAAoB05Z5dUAACaI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpJgAAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAAPhcN6O3TtPkwwAAvtP3/Yxe65IKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBINQEAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAEBGRSilWAACgHTlnl1QAAJojUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQCAv9KNp7UV4Pfux7MRAOCt7X5IabWs4yOi1moQAACa8ASYdxoCxWIEvAAAAABJRU5ErkJggg=="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">C++<span class="_ _8"> </span>Exception<span class="_ _8"> </span>Basics</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">C++<span class="_ _e"> </span>p<span class="_ _3"></span>rovides<span class="_ _e"> </span>three<span class="_ _e"> </span>k<span class="_ _3"></span>eyw<span class="_ _3"></span>ords<span class="_ _b"> </span>for<span class="_ _b"> </span>exception<span class="_ _e"> </span>handling:</div><div class="t m0 x12 ha yab ffe fs6 fc8 sc0 ls0 ws0">throw<span class="_ _a"> </span><span class="ff4 fc0">Throws<span class="_ _b"> </span>an<span class="_ _e"> </span>exception</span></div><div class="t m0 x13 ha y98 ffe fs6 fc8 sc0 ls0 ws0">try<span class="_ _a"> </span><span class="ff4 fc0">Co<span class="_ _c"></span>de<span class="_ _e"> </span>block<span class="_ _e"> </span>containing<span class="_ _e"> </span>p<span class="_ _c"></span>otential<span class="_ _b"> </span>throwing<span class="_ _b"> </span>expressions</span></div><div class="t m0 x12 ha yac ffe fs6 fc8 sc0 ls0 ws0">catch<span class="_ _a"> </span><span class="ff4 fc0">Co<span class="_ _c"></span>de<span class="_ _e"> </span>block<span class="_ _e"> </span>for<span class="_ _b"> </span>handling<span class="_ _e"> </span>the<span class="_ _e"> </span>exception</span></div><div class="t m0 x1 hc yad ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f<span class="fc0">()<span class="_ _8"> </span>{<span class="_ _11"> </span></span></span><span class="fc4">throw<span class="_ _11"> </span><span class="ffa fc6">3<span class="fc0">;<span class="_ _8"> </span>}</span></span></span></div><div class="t m0 x1 hc yae ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc yaf ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x15 hc yb0 ffa fs7 fc0 sc0 ls0 ws0">f();</div><div class="t m0 x14 hc yb1 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc5">int<span class="_ _11"> </span></span>x)<span class="_ _11"> </span>{</div><div class="t m0 x15 hc yb2 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>x;<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>"3"</span></div><div class="t m0 x14 hc yb3 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc yb4 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">19/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf17" class="pf w0 h0" data-page-no="17"><div class="pc pc17 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIpUlEQVR42u3YvU0DQRCG4V10I6IVNVhEVIAQMZI7ownKIXARdEBkbcQkR0aASPiRmLOfp4LVdxe8mn59e98AAKCMl8PzhRUAAKhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAA8KFnphUAAKgjIlxSAQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAODcLRt665zzlKYfY/j/AAC+5JIKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAP5Xz0wrAABQR0S4pAIAUI5IBQBApAIAgEgFAECkAgDAby0mADgNc04jlDXGMAJ8i0sqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAA8Kd6ZloBAIA6IsIlFQCAckQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAACqWzb01jmnDwYA8DNjjA291iUVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRagIAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAA0FprrWemFQAAqCMiXFIBAChHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgDAJ8vxcWcFqO/14ckIAJyJm7t971eX6/GttXVdDQIAQAnv6WMl/gBKnDMAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std<span class="_ _8"> </span><span class="ff1">Exceptions</span></div><div class="t m0 x11 ha y21 ffe fs6 fc0 sc0 ls0 ws0">throw<span class="_ _18"> </span><span class="ff4">can<span class="_ _e"> </span>throw<span class="_ _b"> </span>everything<span class="_ _e"> </span>such<span class="_ _e"> </span>as<span class="_ _b"> </span>integers,<span class="_ _e"> </span>p<span class="_ _c"></span>ointers,<span class="_ _b"> </span>objects,<span class="_ _e"> </span>etc.<span class="_ _11"> </span>The<span class="_ _e"> </span>standa<span class="_ _3"></span>rd</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">w<span class="_ _3"></span>ay<span class="_ _b"> </span>consists<span class="_ _e"> </span>in<span class="_ _e"> </span>using<span class="_ _e"> </span>the<span class="_ _b"> </span><span class="ffe">std<span class="_ _e"> </span></span>libra<span class="_ _3"></span>ry<span class="_ _b"> </span>exceptions<span class="_ _14"> </span><span class="ffe"><stdexcept></span></div><div class="t m0 x1 he yb5 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><stdexcept></span></div><div class="t m0 x1 he yb6 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>bool<span class="_ _8"> </span><span class="ff11 fc0">b)<span class="_ _8"> </span>{</span></div><div class="t m0 x16 he yb7 ff6 fs5 fc4 sc0 ls0 ws0">if<span class="_ _6"> </span><span class="ff11 fc0">(b)</span></div><div class="t m0 xb he yb8 ff6 fs5 fc4 sc0 ls0 ws0">throw<span class="_ _6"> </span><span class="ff11 fc0">std<span class="fc6">::</span>runtime_error(<span class="fca">"runtime<span class="_ _8"> </span>error"</span>);</span></div><div class="t m0 x16 he yb9 ff6 fs5 fc4 sc0 ls0 ws0">throw<span class="_ _6"> </span><span class="ff11 fc0">std<span class="fc6">::</span>logic_error(<span class="fca">"logic<span class="_ _8"> </span>error"</span>);</span></div><div class="t m0 x1 he yba ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he ybb ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he ybc ff6 fs5 fc4 sc0 ls0 ws0">try<span class="_ _6"> </span><span class="ff11 fc0">{</span></div><div class="t m0 xb he ybd ff11 fs5 fc0 sc0 ls0 ws0">f(<span class="fc4">false</span>);</div><div class="t m0 x16 he ybe ff11 fs5 fc0 sc0 ls0 ws0">}<span class="_ _6"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _8"> </span></span>std<span class="fc6">::</span>runtime_error<span class="fc6">&<span class="_ _6"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 xb he ybf ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>e.what();</div><div class="t m0 x16 he yc0 ff11 fs5 fc0 sc0 ls0 ws0">}<span class="_ _6"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _8"> </span></span>std<span class="fc6">::</span>exception<span class="fc6">&<span class="_ _6"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 xb he yc1 ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>e.what();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print:<span class="_ _8"> </span>"logic<span class="_ _6"> </span>error"</span></div><div class="t m0 x16 he yc2 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he yc3 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">20/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf18" class="pf w0 h0" data-page-no="18"><div class="pc pc18 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Exception<span class="_ _8"> </span>Capture</div><div class="t m0 x1 ha y21 ff8 fs6 fc0 sc0 ls0 ws0">NOTE:<span class="_ _e"> </span><span class="ff4">C++,<span class="_ _e"> </span>differently<span class="_ _e"> </span>from<span class="_ _e"> </span>other<span class="_ _b"> </span>programming<span class="_ _b"> </span>languages,<span class="_ _e"> </span>do<span class="_ _c"></span>es<span class="_ _b"> </span>not<span class="_ _e"> </span>require<span class="_ _e"> </span>explicit</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">dynamic<span class="_ _e"> </span>allocation<span class="_ _e"> </span>with<span class="_ _e"> </span>the<span class="_ _e"> </span>k<span class="_ _3"></span>eyw<span class="_ _3"></span>ord<span class="_ _18"> </span><span class="ffe">new<span class="_ _18"> </span></span>for<span class="_ _b"> </span>throwing<span class="_ _b"> </span>an<span class="_ _e"> </span>exception.<span class="_ _11"> </span>The<span class="_ _e"> </span>compiler</div><div class="t m0 x1 ha yc4 ff4 fs6 fc0 sc0 ls0 ws0">implicitly<span class="_ _e"> </span>generates<span class="_ _b"> </span>the<span class="_ _e"> </span>approp<span class="_ _3"></span>riate<span class="_ _e"> </span>code<span class="_ _e"> </span>to<span class="_ _e"> </span>construct<span class="_ _e"> </span>and<span class="_ _b"> </span>clean<span class="_ _e"> </span>up<span class="_ _e"> </span>the<span class="_ _e"> </span>exception</div><div class="t m0 x1 ha yc5 ff4 fs6 fc0 sc0 ls0 ws0">object.<span class="_ _11"> </span>Dynamically<span class="_ _e"> </span>allocated<span class="_ _e"> </span>objects<span class="_ _e"> </span>require<span class="_ _e"> </span>a<span class="_ _18"> </span><span class="ffe">delete<span class="_ _18"> </span></span>call</div><div class="t m0 x1 ha yc6 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>right<span class="_ _b"> </span>wa<span class="_ _3"></span>y<span class="_ _e"> </span>to<span class="_ _e"> </span>capture<span class="_ _b"> </span>an<span class="_ _e"> </span>exception<span class="_ _e"> </span>is<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _18"> </span><span class="ffe">const<span class="_ _b"> </span></span>-reference.<span class="_ _11"> </span>Capturing<span class="_ _b"> </span>by-value<span class="_ _b"> </span>is</div><div class="t m0 x1 ha yc7 ff4 fs6 fc0 sc0 ls0 ws0">also<span class="_ _e"> </span>possible<span class="_ _e"> </span>but,<span class="_ _e"> </span>it<span class="_ _e"> </span>involves<span class="_ _b"> </span>useless<span class="_ _e"> </span>copy<span class="_ _b"> </span>for<span class="_ _b"> </span>non-trivial<span class="_ _e"> </span>exception<span class="_ _e"> </span>objects</div><div class="t m0 x11 ha yc8 ffe fs6 fc0 sc0 ls0 ws0">catch(...)<span class="_ _18"> </span><span class="ff4">can<span class="_ _e"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>used<span class="_ _e"> </span>to<span class="_ _e"> </span>capture<span class="_ _e"> </span>any<span class="_ _b"> </span>thrown<span class="_ _b"> </span>exception</span></div><div class="t m0 x1 hc yc9 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc yca ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x15 hc ycb ff6 fs7 fc4 sc0 ls0 ws0">throw<span class="_ _11"> </span><span class="ffa fca">"runtime<span class="_ _8"> </span>error"<span class="fc0">;<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>throw<span class="_ _8"> </span>const<span class="_ _11"> </span>char*</span></span></span></div><div class="t m0 x14 hc ycc ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(...)<span class="_ _11"> </span>{</div><div class="t m0 x15 hc ycd ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"exception"</span></span>;<span class="_ _22"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>"exception"</span></div><div class="t m0 x14 hc yce ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc ycf ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">21/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf19" class="pf w0 h0" data-page-no="19"><div class="pc pc19 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdUlEQVR42u3YsQlCMRSG0Rd5wSo4g1g5gYi14GYu4TgWDuEGVo9UpomdrWDjfXjOBOFP83HTZncYAAAgjPvturACAADRiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAN5Sa80KAADEkXN2SQUAIByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAwEfjjN5aa/VhAADfKaXM6LUuqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAgJ9IrTUrAAAQR87ZJRUAgHBEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAABDCOJ3XVoA/9zhejABAHNv9KaXVsk/PYei9GwQAgBBe5uoaAqN8Y2sAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Exception<span class="_ _8"> </span>Propagation</div><div class="t m0 x1 ha yd0 ff4 fs6 fc0 sc0 ls0 ws0">Exceptions<span class="_ _e"> </span>a<span class="_ _3"></span>re<span class="_ _e"> </span>automatically<span class="_ _e"> </span>p<span class="_ _3"></span>ropagated<span class="_ _e"> </span>along<span class="_ _b"> </span>the<span class="_ _e"> </span>call<span class="_ _e"> </span>stack.<span class="_ _11"> </span>The<span class="_ _e"> </span>user<span class="_ _b"> </span>can<span class="_ _e"> </span>also</div><div class="t m0 x1 ha yd1 ff4 fs6 fc0 sc0 ls0 ws0">control<span class="_ _e"> </span>ho<span class="_ _3"></span>w<span class="_ _e"> </span>they<span class="_ _e"> </span>a<span class="_ _3"></span>re<span class="_ _e"> </span>p<span class="_ _3"></span>ropagated</div><div class="t m0 x1 hc yd2 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc yd3 ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x15 hc yd4 ffa fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x14 hc yd5 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _11"> </span></span>std<span class="fc6">::</span>runtime_error<span class="fc6">&<span class="_ _11"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 x15 hc yd6 ff6 fs7 fc4 sc0 ls0 ws0">throw<span class="_ _11"> </span><span class="ffa fc0">e;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _11"> </span>propagate<span class="_ _11"> </span>a<span class="_ _8"> </span>copy<span class="_ _11"> </span>of<span class="_ _8"> </span>the<span class="_ _11"> </span>exception</span></span></div><div class="t m0 x14 hc yd7 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _11"> </span></span>std<span class="fc6">::</span>exception<span class="fc6">&<span class="_ _11"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 x15 hc yd8 ff6 fs7 fc4 sc0 ls0 ws0">throw<span class="ffa fc0">;<span class="_ _1d"> </span><span class="ffd fc7">//<span class="_ _11"> </span>propagate<span class="_ _11"> </span>the<span class="_ _8"> </span>exception</span></span></div><div class="t m0 x14 hc yd9 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc yda ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">22/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1a" class="pf w0 h0" data-page-no="1a"><div class="pc pc1a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWJnr6D8p88zQfjSvPx5tdklAAAI43o5z6wAAEA0IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgKdca7UCAABxlFJcUgEACEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAMCXdRN66ziOPgwA4D1930/otS6pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAP5ArrVaAQCAOEopLqkAAIQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAAB+SDccl1YAXnLbn4wAwOest4ecF/M23FNqrRkEAIAQHhYVGgIowbEbAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Defining<span class="_ _8"> </span>Custom<span class="_ _8"> </span>Exceptions</div><div class="t m0 x1 hc ydb ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _18"> </span><span class="fc7"><exception><span class="_ _18"> </span>//<span class="_ _8"> </span>to<span class="_ _11"> </span>not<span class="_ _8"> </span>confuse<span class="_ _11"> </span>with<span class="_ _11"> </span><stdexcept></span></div><div class="t m0 x1 hc ydc ff6 fs7 fc4 sc0 ls0 ws0">struct<span class="_ _11"> </span><span class="fc8">MyException<span class="_ _8"> </span><span class="ffa fc6">:<span class="_ _11"> </span></span></span>public<span class="_ _11"> </span><span class="ffa fc0">std<span class="fc6">::</span>exception<span class="_ _8"> </span>{</span></div><div class="t m0 x14 hc ydd ff6 fs7 fc4 sc0 ls0 ws0">const<span class="_ _11"> </span><span class="fc5">char<span class="ffa fc6">*<span class="_ _8"> </span><span class="fc8">what<span class="fc0">()<span class="_ _11"> </span></span></span></span></span>const<span class="_ _11"> </span>noexcept<span class="_ _8"> </span>override<span class="_ _11"> </span><span class="ffa fc0">{<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _11"> </span>could<span class="_ _11"> </span>be<span class="_ _8"> </span>also<span class="_ _11"> </span>"constexpr"</span></span></div><div class="t m0 x15 hc yde ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fca">"C++<span class="_ _8"> </span>Exception"<span class="fc0">;</span></span></div><div class="t m0 x14 hc ydf ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc ye0 ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hc ye1 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc ye2 ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x15 hc ye3 ff6 fs7 fc4 sc0 ls0 ws0">throw<span class="_ _11"> </span><span class="ffa fc0">MyException();</span></div><div class="t m0 x14 hc ye4 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _11"> </span></span>std<span class="fc6">::</span>exception<span class="fc6">&<span class="_ _11"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 x15 hc ye5 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>e.what();<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>"C++<span class="_ _11"> </span>Exception"</span></div><div class="t m0 x14 hc ye6 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc ye7 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">23/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1b" class="pf w0 h0" data-page-no="1b"><div class="pc pc1b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">noexcept<span class="_ _8"> </span><span class="ff1">Keyw<span class="_ _3"></span>o<span class="_ _3"></span>rd</span></div><div class="t m0 x1 ha y21 ff4 fs6 fc9 sc0 ls0 ws0">C++03<span class="_ _e"> </span><span class="fc0">allo<span class="_ _3"></span>ws<span class="_ _e"> </span>listing<span class="_ _e"> </span>the<span class="_ _b"> </span>exceptions<span class="_ _e"> </span>that<span class="_ _e"> </span>a<span class="_ _e"> </span>function<span class="_ _b"> </span>might<span class="_ _e"> </span>directly<span class="_ _e"> </span>o<span class="_ _3"></span>r<span class="_ _e"> </span>indirectly<span class="_ _e"> </span>thro<span class="_ _3"></span>w,</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">e.g.<span class="_ _5"> </span><span class="ffe">void<span class="_"> </span>f()<span class="_"> </span><span class="fc8">throw</span>(int,<span class="_"> </span>const<span class="_"> </span>char*)<span class="_"> </span>{</span></div><div class="t m0 x1 ha ye8 ff4 fs6 fc9 sc0 ls0 ws0">C++11<span class="_ _e"> </span><span class="fc0">dep<span class="_ _3"></span>recates<span class="_ _18"> </span><span class="ffe">throw<span class="_ _14"> </span></span>and<span class="_ _b"> </span>intro<span class="_ _c"></span>duces<span class="_ _e"> </span>the<span class="_ _b"> </span><span class="ffe fc8">noexcept<span class="_ _e"> </span></span>keyw<span class="_ _3"></span>o<span class="_ _3"></span>rd</span></div><div class="t m0 x1 hc ye9 ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f1<span class="fc0">();<span class="_ _23"> </span><span class="ffd fc7">//<span class="_ _11"> </span>may<span class="_ _8"> </span>throw</span></span></span></div><div class="t m0 x1 hc yea ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f2<span class="fc0">()<span class="_ _8"> </span></span></span><span class="fc4">noexcept<span class="ffa fc0">;<span class="_ _24"> </span><span class="ffd fc7">//<span class="_ _11"> </span>does<span class="_ _8"> </span>not<span class="_ _11"> </span>throw</span></span></span></div><div class="t m0 x1 hc yeb ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f3<span class="fc0">()<span class="_ _8"> </span></span></span><span class="fc4">noexcept<span class="ffa fc0">(<span class="fc4">true</span>);<span class="_ _16"> </span><span class="ffd fc7">//<span class="_ _11"> </span>does<span class="_ _11"> </span>not<span class="_ _8"> </span>throw</span></span></span></div><div class="t m0 x1 hc yec ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f4<span class="fc0">()<span class="_ _8"> </span></span></span><span class="fc4">noexcept<span class="ffa fc0">(<span class="fc4">false</span>);<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>may<span class="_ _8"> </span>throw</span></span></span></div><div class="t m0 x1 hc yed ff6 fs7 fc4 sc0 ls0 ws0">template<span class="ffa fc6"><</span><span class="fc5">bool<span class="_ _11"> </span><span class="ffa fc0">X<span class="fc6">></span></span></span></div><div class="t m0 x1 hc yee ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc0">f5()<span class="_ _8"> </span></span><span class="fc4">noexcept<span class="ffa fc0">(X);<span class="_ _19"> </span><span class="ffd fc7">//<span class="_ _11"> </span>may<span class="_ _11"> </span>throw<span class="_ _8"> </span>if<span class="_ _11"> </span>X<span class="_ _8"> </span>is<span class="_ _11"> </span>false</span></span></span></div><div class="t m0 x1 h5 yef ff4 fs3 fc0 sc0 ls0 ws0">If<span class="_ _b"> </span>a<span class="_ _18"> </span><span class="ffe">noexcept<span class="_ _1c"> </span></span>function<span class="_ _b"> </span>throw<span class="_ _b"> </span>an<span class="_ _b"> </span>exception,<span class="_ _b"> </span>the<span class="_ _b"> </span>runtime<span class="_ _b"> </span>calls<span class="_ _18"> </span><span class="ffe">std::terminate()</span></div><div class="t m0 x11 ha yf0 ffe fs6 fc0 sc0 ls0 ws0">noexcept<span class="_ _18"> </span><span class="ff4">should<span class="_ _e"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>used<span class="_ _e"> </span>when<span class="_ _e"> </span>thro<span class="_ _3"></span>wing<span class="_ _e"> </span>an<span class="_ _e"> </span>exception<span class="_ _e"> </span>is<span class="_ _b"> </span>imp<span class="_ _c"></span>ossible<span class="_ _e"> </span>o<span class="_ _3"></span>r<span class="_ _e"> </span>unacceptable.</span></div><div class="t m0 x1 ha yf1 ff4 fs6 fc0 sc0 ls0 ws0">It<span class="_ _e"> </span>is<span class="_ _b"> </span>also<span class="_ _e"> </span>useful<span class="_ _e"> </span>when<span class="_ _e"> </span>the<span class="_ _b"> </span>function<span class="_ _e"> </span>contains<span class="_ _e"> </span>co<span class="_ _c"></span>de<span class="_ _b"> </span>outside<span class="_ _e"> </span>user<span class="_ _e"> </span>control,<span class="_ _e"> </span>e.g.<span class="_ _11"> </span><span class="ffe">std</span></div><div class="t m0 x1 ha yf2 ff4 fs6 fc0 sc0 ls0 ws0">functions/objects</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">24/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1c" class="pf w0 h0" data-page-no="1c"><div class="pc pc1c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIjUlEQVR42u3YsWkDQRCG0Vtxg6LFNQhHrsAYxQJ35iZcjgIX4Q4ciY08ySlTAQKJOem9CpZ/k49pr+/7CQAAyvj9OW6sAABANSIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICLlplWAACgjohwSQUAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAAA9iNgHwGMYYRriF3rsRgPtzSQUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAO6qZaYVAACoIyJcUgEAKEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAANZsXtFbxxg+DADgOr33Fb3WJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQDgmbTMtAIAAHVEhEsqAADliFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgBARfPpa2cFoI6/w7cRAJ7c28dnay/b5fQ/TcuyGAQAgBLOV3UgAP7ZnU8AAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">F<span class="_ _3"></span>unction-try-blo<span class="_ _c"></span>ck</div><div class="t m0 x1 ha yf3 ff4 fs6 fc0 sc0 ls0 ws0">Exception<span class="_ _e"> </span>handlers<span class="_ _b"> </span>can<span class="_ _e"> </span>b<span class="_ _c"></span>e<span class="_ _e"> </span>defined<span class="_ _b"> </span>around<span class="_ _b"> </span>the<span class="_ _e"> </span>b<span class="_ _c"></span>ody<span class="_ _e"> </span>of<span class="_ _e"> </span>a<span class="_ _e"> </span>function.</div><div class="t m0 x1 ha yf4 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>behavior<span class="_ _b"> </span>is<span class="_ _e"> </span>the<span class="_ _e"> </span>same<span class="_ _e"> </span>as<span class="_ _b"> </span>using<span class="_ _e"> </span>the<span class="_ _14"> </span><span class="ffe">try/catch<span class="_ _18"> </span></span>blocks<span class="_ _e"> </span>within<span class="_ _e"> </span>the<span class="_ _e"> </span>function<span class="_ _b"> </span>scop<span class="_ _c"></span>e</div><div class="t m0 x1 ha yf5 fff fs6 fc0 sc0 ls0 ws0">→<span class="_ _e"> </span><span class="ff4">less<span class="_ _b"> </span>verb<span class="_ _c"></span>ose</span></div><div class="t m0 x1 hc yf6 ff6 fs7 fc5 sc0 ls0 ws0">void<span class="_ _11"> </span><span class="ffa fc8">f<span class="fc0">()<span class="_ _8"> </span></span></span><span class="fc4">try<span class="_ _11"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 x14 hc yf7 ffa fs7 fc0 sc0 ls0 ws0">...<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>do<span class="_ _11"> </span>something</span></div><div class="t m0 x1 hc yf8 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(<span class="ff6 fc4">const<span class="_ _11"> </span></span>std<span class="fc6">::</span>runtime_error<span class="fc6">&<span class="_ _11"> </span></span>e)<span class="_ _8"> </span>{</div><div class="t m0 x14 hc yf9 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>e.what();</div><div class="t m0 x1 hc yfa ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(...)<span class="_ _11"> </span>{<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>other<span class="_ _11"> </span>exception</span></div><div class="t m0 x14 hc yfb ffa fs7 fc0 sc0 ls0 ws0">...</div><div class="t m0 x1 hc yfc ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">25/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1d" class="pf w0 h0" data-page-no="1d"><div class="pc pc1d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAItElEQVR42u3Zu03GQBBGUS/yiGhEDYiIChAiRqIzmqAcAoqgA6JfG7GJyUgIeARmbJ9TgfXZwdW4Xd3cTQAAUMbry/OZFQAAqEakAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAADwqY0xrAAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAEc3mwCAOnrvRji4zDQCk0sqAAAiFQAAvud3/y/U+QnlVwgAsG8uqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgCwM7MJfi4zjQAAsAKXVAAARCoAAIhUAAA2p40xrAAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAUNm8oWftvR/q3WSmDxQAOCaXVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAADwv9oYwwoAANQRES6pAACUI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAYGXzhp619+6FAQD8TWZu6GldUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkmAABApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAA8EUbY1gBAIA6IsIlFQCAckQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAACrmU+Pl1YAtuvt/skIADtzffvQ2sX5cnqfpmVZDAIAQAkfkropKc73tG0AAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>Allo<span class="_ _c"></span>cation<span class="_ _8"> </span>Issues<span class="_ _25"> </span>1/4</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _18"> </span><span class="ff6">new<span class="_ _18"> </span></span>op<span class="_ _c"></span>erato<span class="_ _3"></span>r<span class="_ _b"> </span>automatically<span class="_ _e"> </span>thro<span class="_ _3"></span>ws<span class="_ _e"> </span>an<span class="_ _b"> </span>exception<span class="_ _e"> </span>(<span class="_ _10"> </span><span class="ffe">std::bad_alloc<span class="_ _10"> </span></span>)<span class="_ _b"> </span>if<span class="_ _e"> </span>it<span class="_ _b"> </span>cannot</div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">allo<span class="_ _c"></span>cate<span class="_ _b"> </span>the<span class="_ _e"> </span>memory</div><div class="t m0 x11 ha ye8 ffe fs6 fc0 sc0 ls0 ws0">delete<span class="_ _18"> </span><span class="ff4">never<span class="_ _e"> </span>throws<span class="_ _b"> </span>an<span class="_ _e"> </span>exception<span class="_ _e"> </span>(unrecoverable<span class="_ _b"> </span>error)</span></div><div class="t m0 x1 hc yfd ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x17 hc yfe ff6 fs7 fc5 sc0 ls0 ws0">int<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc0">ptr<span class="_ _8"> </span></span>=<span class="_ _11"> </span></span><span class="fc4">nullptr<span class="ffa fc0">;</span></span></div><div class="t m0 x17 hc yff ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x18 hc y100 ffa fs7 fc0 sc0 ls0 ws0">ptr<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">new<span class="_ _11"> </span><span class="fc5">int</span></span></span>[<span class="fc6">1000</span>];</div><div class="t m0 x17 hc y101 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x17 hc y102 ff6 fs7 fc4 sc0 ls0 ws0">catch<span class="_ _11"> </span><span class="ffa fc0">(</span>const<span class="_ _8"> </span><span class="ffa fc0">std<span class="fc6">::</span>bad_alloc<span class="fc6">&<span class="_ _11"> </span></span>e)<span class="_ _11"> </span>{</span></div><div class="t m0 x18 hc y103 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"bad<span class="_ _11"> </span>allocation:<span class="_ _11"> </span>"<span class="_ _8"> </span></span><<<span class="_ _11"> </span></span>e.what();</div><div class="t m0 x17 hc y104 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x17 hc y105 ff6 fs7 fc4 sc0 ls0 ws0">delete<span class="ffa fc0">[]<span class="_ _11"> </span>ptr;</span></div><div class="t m0 x1 hc y106 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">26/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1e" class="pf w0 h0" data-page-no="1e"><div class="pc pc1e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>Allo<span class="_ _c"></span>cation<span class="_ _8"> </span>Issues<span class="_ _25"> </span>2/4</div><div class="t m0 x1 ha y107 ff4 fs6 fc0 sc0 ls0 ws0">C++<span class="_ _e"> </span>also<span class="_ _b"> </span>provides<span class="_ _b"> </span>an<span class="_ _e"> </span>overload<span class="_ _e"> </span>of<span class="_ _e"> </span>the<span class="_ _18"> </span><span class="ff6">new<span class="_ _18"> </span></span>op<span class="_ _c"></span>erator<span class="_ _b"> </span>with<span class="_ _e"> </span>non-thro<span class="_ _3"></span>wing<span class="_ _e"> </span>memo<span class="_ _3"></span>ry</div><div class="t m0 x1 ha y108 ff4 fs6 fc0 sc0 ls0 ws0">allo<span class="_ _c"></span>cation</div><div class="t m0 x1 hc y109 ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _18"> </span><span class="fc7"><new><span class="_ _18"> </span>//<span class="_ _8"> </span>std::nothrow</span></div><div class="t m0 x1 hc yd5 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc yd6 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc0">ptr<span class="_ _8"> </span></span>=<span class="_ _11"> </span></span><span class="fc4">new<span class="_ _11"> </span><span class="ffa fc0">(std<span class="fc6">::</span>nothrow)<span class="_ _8"> </span></span></span>int<span class="ffa fc0">[<span class="fc6">1000</span>];</span></div><div class="t m0 x14 hc yd7 ff6 fs7 fc4 sc0 ls0 ws0">if<span class="_ _11"> </span><span class="ffa fc0">(ptr<span class="_ _8"> </span><span class="fc6">==<span class="_ _11"> </span></span></span>nullptr<span class="ffa fc0">)</span></div><div class="t m0 x15 hc yd8 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"bad<span class="_ _11"> </span>allocation"</span></span>;</div><div class="t m0 x1 hc yd9 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">27/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf1f" class="pf w0 h0" data-page-no="1f"><div class="pc pc1f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIjklEQVR42u3YsU0DQRCG0Vt0I6IVNVhEVIAQMZI7ownKIXARdEBkbcQkR+bIcnCBNWe/V8Hq3+TTtOfX9wkAAMr4OXw/WAEAgGpEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAJy0zrQAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgJN5Q28dY/gwAIB1eu8beq1LKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAItUEAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAwJa1zLQCAAB1RIRLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAHDZbAK4K2MMI6zQezcCwDW5pAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAgG1rmWkFAADqiAiXVAAAyhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgDATZmPnzsrAJz1+/FlBIDre3nbt/b0uBz/pmlZFoMAAFDCP7prIACnNNt0AAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>Allo<span class="_ _c"></span>cation<span class="_ _8"> </span>Issues<span class="_ _25"> </span>3/4</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">Thro<span class="_ _3"></span>wing<span class="_ _e"> </span>exceptions<span class="_ _e"> </span>in<span class="_ _e"> </span><span class="ff8">constructo<span class="_ _3"></span>rs<span class="_ _8"> </span><span class="ff4">is<span class="_ _e"> </span>fine<span class="_ _e"> </span>while<span class="_ _b"> </span>it<span class="_ _e"> </span>is<span class="_ _e"> </span>not<span class="_ _e"> </span>allo<span class="_ _3"></span>wed<span class="_ _b"> </span>in<span class="_ _e"> </span><span class="ff8">destructo<span class="_ _3"></span>rs</span></span></span></div><div class="t m0 x1 hc y8e ff6 fs7 fc4 sc0 ls0 ws0">struct<span class="_ _11"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 x14 hc y10a ffa fs7 fc0 sc0 ls0 ws0">A()<span class="_ _16"> </span>{<span class="_ _11"> </span><span class="ff6 fc4">new<span class="_ _8"> </span><span class="fc5">int</span></span>[<span class="fc6">10</span>];<span class="_ _11"> </span>}</div><div class="t m0 x14 hc y8f ff12 fs7 fc0 sc0 ls0 ws0">∼<span class="ffa">A()<span class="_ _11"> </span>{<span class="_ _8"> </span><span class="ff6 fc4">throw<span class="_ _11"> </span></span><span class="fc6">-2</span>;<span class="_ _26"> </span>}</span></div><div class="t m0 x1 hc y10b ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hc y10c ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc y10d ff6 fs7 fc4 sc0 ls0 ws0">try<span class="_ _11"> </span><span class="ffa fc0">{</span></div><div class="t m0 x18 hc y10e ffa fs7 fc0 sc0 ls0 ws0">A<span class="_ _11"> </span>a;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _11"> </span>could<span class="_ _11"> </span>throw<span class="_ _8"> </span>"bad_alloc"</span></div><div class="t m0 x19 hc y10f ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>"a"<span class="_ _8"> </span>is<span class="_ _11"> </span>out-of-scope<span class="_ _11"> </span>-><span class="_ _8"> </span>throw<span class="_ _11"> </span>2</div><div class="t m0 x14 hc y110 ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ff6 fc4">catch<span class="_ _8"> </span></span>(...)<span class="_ _11"> </span>{</div><div class="t m0 x19 hc y111 ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>two<span class="_ _8"> </span>exceptions<span class="_ _11"> </span>at<span class="_ _11"> </span>the<span class="_ _8"> </span>same<span class="_ _11"> </span>time</div><div class="t m0 x14 hc y112 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc y113 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 ha y114 ff8 fs6 fc0 sc0 ls0 ws0">Destructo<span class="_ _3"></span>rs<span class="_ _11"> </span><span class="ff4">should<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>mark<span class="_ _3"></span>ed<span class="_ _18"> </span><span class="ffe">noexcept</span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">28/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf20" class="pf w0 h0" data-page-no="20"><div class="pc pc20 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Memo<span class="_ _3"></span>ry<span class="_ _8"> </span>Allo<span class="_ _c"></span>cation<span class="_ _8"> </span>Issues<span class="_ _25"> </span>4/4</div><div class="t m0 x1 hc ydb ff6 fs7 fc4 sc0 ls0 ws0">struct<span class="_ _11"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 x14 hc y115 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="ffa fc6">*<span class="_ _11"> </span><span class="fc0">ptr1,<span class="_ _8"> </span></span>*<span class="fc0">ptr2;</span></span></div><div class="t m0 x14 hc ydd ffa fs7 fc0 sc0 ls0 ws0">A()<span class="_ _11"> </span>{</div><div class="t m0 x15 hc yde ffa fs7 fc0 sc0 ls0 ws0">ptr1<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">new<span class="_ _11"> </span><span class="fc5">int</span></span></span>[<span class="fc6">10</span>];</div><div class="t m0 x15 hc ydf ffa fs7 fc0 sc0 ls0 ws0">ptr2<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">new<span class="_ _11"> </span><span class="fc5">int</span></span></span>[<span class="fc6">10</span>];<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>if<span class="_ _11"> </span>bad_alloc<span class="_ _8"> </span>here,<span class="_ _11"> </span>ptr1<span class="_ _11"> </span>is<span class="_ _8"> </span>lost</span></div><div class="t m0 x14 hc ye0 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc y116 ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hc y117 ff6 fs7 fc4 sc0 ls0 ws0">struct<span class="_ _11"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 x14 hc y118 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><<span class="ff6 fc5">int</span></span>[]<span class="fc6">><span class="_ _11"> </span></span>ptr1,<span class="_ _8"> </span>ptr2;</div><div class="t m0 x14 hc y119 ffa fs7 fc0 sc0 ls0 ws0">A()<span class="_ _11"> </span>{</div><div class="t m0 x15 hc y11a ffa fs7 fc0 sc0 ls0 ws0">ptr1<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>make_unique<span class="fc6"><<span class="ff6 fc5">int</span></span>[]<span class="fc6">></span>(<span class="fc6">10</span>);</div><div class="t m0 x15 hc y11b ffa fs7 fc0 sc0 ls0 ws0">ptr2<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>make_unique<span class="fc6"><<span class="ff6 fc5">int</span></span>[]<span class="fc6">></span>(<span class="fc6">10</span>);<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>if<span class="_ _8"> </span>bad_alloc<span class="_ _11"> </span>here,</span></div><div class="t m0 x14 hc y11c ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _27"> </span><span class="ffd fc7">//<span class="_ _11"> </span>ptr1<span class="_ _8"> </span>is<span class="_ _11"> </span>deallocated</span></div><div class="t m0 x1 hc y11d ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">29/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf21" class="pf w0 h0" data-page-no="21"><div class="pc pc21 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Return<span class="_ _8"> </span>Co<span class="_ _c"></span>de<span class="_ _8"> </span>and<span class="_ _8"> </span>Exception<span class="_ _8"> </span>Summa<span class="_ _3"></span>ry</div><div class="t m0 x1a hb y11e ff1 fs7 fc0 sc0 ls0 ws0">Exception<span class="_ _28"> </span>Return<span class="_ _b"> </span>Code</div><div class="t m0 x1b hb y11f ff1 fs7 fc0 sc0 ls0 ws0">Pros</div><div class="t m0 x1c hb y120 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Cannot<span class="_ _b"> </span>be<span class="_ _b"> </span>igno<span class="_ _3"></span>red</span></div><div class="t m0 x1c hb y121 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Wo<span class="_ _3"></span>rk<span class="_ _b"> </span>w<span class="_ _3"></span>ell<span class="_ _10"> </span>with<span class="_ _b"> </span>object-o<span class="_ _3"></span>riented<span class="_ _b"> </span>semantic</span></div><div class="t m0 x1c hb y122 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Information:<span class="_ _6"> </span>Exceptions<span class="_ _10"> </span>can<span class="_ _b"> </span>be<span class="_ _b"> </span>a<span class="_ _3"></span>rbitrarily<span class="_ _10"> </span>rich</span></div><div class="t m0 x1c hb y123 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Clean<span class="_ _b"> </span>code:<span class="_ _8"> </span>Conceptually<span class="_ _7"></span>,<span class="_ _b"> </span>clean<span class="_ _10"> </span>separation</span></div><div class="t m0 xd hb y124 ffb fs7 fc0 sc0 ls0 ws0">b<span class="_ _c"></span>et<span class="_ _3"></span>w<span class="_ _3"></span>een<span class="_ _b"> </span>the<span class="_ _10"> </span>co<span class="_ _c"></span>de<span class="_ _10"> </span>that<span class="_ _10"> </span>detects<span class="_ _b"> </span>erro<span class="_ _3"></span>rs<span class="_ _b"> </span>and<span class="_ _10"> </span>the</div><div class="t m0 xd hb y125 ffb fs7 fc0 sc0 ls0 ws0">co<span class="_"> </span>d<span class="_"> </span>e<span class="_ _b"> </span>that<span class="_ _10"> </span>handles<span class="_ _b"> </span>the<span class="_ _10"> </span>error,<span class="_ _10"> </span>but.<span class="_ _21"> </span>.<span class="_ _29"> </span>.<span class="_ _21"> </span>*</div><div class="t m0 x1c hb y126 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Non-Intrusive<span class="_ _b"> </span>wrt.<span class="_ _6"> </span>API:<span class="_ _10"> </span>Prop<span class="_ _c"></span>er<span class="_ _10"> </span>communication</span></div><div class="t m0 xd hb y127 ffb fs7 fc0 sc0 ls0 ws0"><span class="fcc sc0">channel</span></div><div class="t m0 x1d hb y128 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Visibility:<span class="_ _6"> </span>p<span class="_ _3"></span>rototype<span class="_ _b"> </span>of<span class="_ _10"> </span>the<span class="_ _b"> </span>called<span class="_ _10"> </span>function</span></div><div class="t m0 x1d hb y129 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">No<span class="_ _b"> </span>performance<span class="_ _10"> </span>overhead</span></div><div class="t m0 x1d hb y12a ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">No<span class="_ _b"> </span>code<span class="_ _b"> </span>bloat</span></div><div class="t m0 x1d hb y12b ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Easy<span class="_ _b"> </span>to<span class="_ _10"> </span>debug</span></div><div class="t m0 x1b hb y12c ff1 fs7 fc0 sc0 ls0 ws0">Cons</div><div class="t m0 x1c hb y12d ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Visibility:<span class="_ _6"> </span>Not<span class="_ _10"> </span>visible<span class="_ _b"> </span>without<span class="_ _10"> </span>further<span class="_ _10"> </span>analysis<span class="_ _b"> </span>of</span></div><div class="t m0 xd hb y12e ffb fs7 fc0 sc0 ls0 ws0">the<span class="_ _10"> </span>co<span class="_ _c"></span>de<span class="_ _10"> </span>or<span class="_ _10"> </span>do<span class="_ _c"></span>cumentation</div><div class="t m0 x1c hb y12f ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Clean<span class="_ _b"> </span>code:<span class="_ _8"> </span>*...<span class="_ _6"> </span>handling<span class="_ _10"> </span>exception<span class="_ _b"> </span>can<span class="_ _10"> </span>generate</span></div><div class="t m0 xd hb y130 ffb fs7 fc0 sc0 ls0 ws0">mo<span class="_ _3"></span>re<span class="_ _b"> </span>code<span class="_ _b"> </span>than<span class="_ _10"> </span>the<span class="_ _b"> </span>functionalit<span class="_ _3"></span>y<span class="_ _10"> </span>itself</div><div class="t m0 x1c hb y131 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Dynamic<span class="_ _b"> </span>behavior:<span class="_ _6"> </span>memory<span class="_ _10"> </span>and<span class="_ _10"> </span>RTTI</span></div><div class="t m0 x1c hb y132 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Extreme<span class="_ _b"> </span>performance<span class="_ _10"> </span>overhead<span class="_ _b"> </span>in<span class="_ _10"> </span>the<span class="_ _10"> </span>failure<span class="_ _b"> </span>case</span></div><div class="t m0 x1c hb y133 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Co<span class="_ _c"></span>de<span class="_ _10"> </span>bloat</span></div><div class="t m0 x1c hb y134 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Non-trivial<span class="_ _b"> </span>to<span class="_ _10"> </span>debug</span></div><div class="t m0 x1d hb y135 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Easy<span class="_ _b"> </span>to<span class="_ _10"> </span>ignore,<span class="_ _1c"> </span><span class="ffa">[[nodiscard]]<span class="_ _1c"> </span></span>can<span class="_ _b"> </span>help</span></div><div class="t m0 x1d hb y136 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Cannot<span class="_ _10"> </span>b<span class="_ _c"></span>e<span class="_ _2a"> </span>used<span class="_ _2a"> </span>with<span class="_ _10"> </span>object-o<span class="_ _3"></span>riented<span class="_ _10"> </span>semantic</span></div><div class="t m0 x1d hb y137 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Information:<span class="_ _6"> </span>Histo<span class="_ _3"></span>rically<span class="_ _3"></span>,<span class="_ _10"> </span>a<span class="_ _10"> </span>simple<span class="_ _b"> </span>integer.</span></div><div class="t m0 x1e hb y138 ffb fs7 fc0 sc0 ls0 ws0">No<span class="_ _3"></span>wada<span class="_ _3"></span>ys,<span class="_ _b"> </span>richer<span class="_ _10"> </span>error<span class="_ _2a"> </span>co<span class="_ _c"></span>de</div><div class="t m0 x1d hb y139 ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Clean<span class="_ _b"> </span>code:<span class="_ _8"> </span>A<span class="_ _3"></span>t<span class="_ _b"> </span>least,<span class="_ _10"> </span>an<span class="_ _10"> </span>if<span class="_ _b"> </span>statement<span class="_ _10"> </span>after</span></div><div class="t m0 x1e hb y13a ffb fs7 fc0 sc0 ls0 ws0">each<span class="_ _10"> </span>function<span class="_ _b"> </span>call</div><div class="t m0 x1d hb y13b ff9 fs7 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ffb">Non-Intrusive<span class="_ _b"> </span>wrt.<span class="_ _6"> </span>API:<span class="_ _10"> </span>Monop<span class="_ _c"></span>olization<span class="_ _10"> </span>of</span></div><div class="t m0 x1e hb y13c ffb fs7 fc0 sc0 ls0 ws0">the<span class="_ _10"> </span>return<span class="_ _b"> </span>channel</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">30/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf22" class="pf w0 h0" data-page-no="22"><div class="pc pc22 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::expected<span class="_ _2b"> </span><span class="ff1">1/2</span></div><div class="t m0 x1 ha y21 ff4 fs6 fc9 sc0 ls0 ws0">C++23<span class="_ _e"> </span><span class="fc0">introduces<span class="_ _14"> </span><span class="ff6">std::expected<span class="_ _18"> </span></span>to<span class="_ _e"> </span>get<span class="_ _b"> </span>the<span class="_ _e"> </span>b<span class="_ _c"></span>est<span class="_ _e"> </span>p<span class="_ _3"></span>rop<span class="_ _c"></span>erties<span class="_ _b"> </span>of<span class="_ _e"> </span>return<span class="_ _e"> </span>co<span class="_ _c"></span>des<span class="_ _b"> </span>and</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">exceptions</div><div class="t m0 x1 ha ye8 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>class<span class="_ _b"> </span>template<span class="_ _14"> </span><span class="ffe">expected<T,<span class="_"> </span>E><span class="_ _18"> </span></span>contains<span class="_ _e"> </span>either:</div><div class="t m0 xc ha y13d ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">A<span class="_ _e"> </span>value<span class="_ _e"> </span>of<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _18"> </span><span class="ffe">T<span class="_ _10"> </span></span>,<span class="_ _e"> </span>the<span class="_ _e"> </span>expected<span class="_ _e"> </span>value<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e;<span class="_ _e"> </span>o<span class="_ _3"></span>r</span></div><div class="t m0 xc ha y13e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">A<span class="_ _e"> </span>value<span class="_ _e"> </span>of<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _18"> </span><span class="ffe">E<span class="_ _10"> </span></span>,<span class="_ _e"> </span>an<span class="_ _e"> </span>erro<span class="_ _3"></span>r<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _e"> </span>used<span class="_ _b"> </span>when<span class="_ _e"> </span>an<span class="_ _e"> </span>unexp<span class="_ _c"></span>ected<span class="_ _b"> </span>outcome<span class="_ _e"> </span>o<span class="_ _c"></span>ccured</span></div><div class="t m0 x1 hc y13f ff6 fs7 fc4 sc0 ls0 ws0">enum<span class="_ _11"> </span>class<span class="_ _8"> </span><span class="fc8">Error<span class="_ _11"> </span><span class="ffa fc0">{<span class="_ _11"> </span>Invalid<span class="_ _8"> </span>};</span></span></div><div class="t m0 x1 hc y140 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>expected<span class="fc6"><<span class="ff6 fc5">int</span></span>,<span class="_ _11"> </span>Error<span class="fc6">><span class="_ _8"> </span></span>f(<span class="ff6 fc5">int<span class="_ _11"> </span></span>v)<span class="_ _11"> </span>{</div><div class="t m0 x14 hc y141 ff6 fs7 fc4 sc0 ls0 ws0">if<span class="_ _11"> </span><span class="ffa fc0">(v<span class="_ _8"> </span><span class="fc6">><span class="_ _11"> </span>0</span>)</span></div><div class="t m0 x15 hc y142 ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fc6">3<span class="fc0">;</span></span></div><div class="t m0 x14 hc y143 ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fc0">std<span class="fc6">::</span>unexpected(Error<span class="fc6">::</span>Invalid);</span></div><div class="t m0 x1 hc y144 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">31/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf23" class="pf w0 h0" data-page-no="23"><div class="pc pc23 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::expected<span class="_ _2b"> </span><span class="ff1">2/2</span></div><div class="t m0 x1 ha y145 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>user<span class="_ _b"> </span>cho<span class="_ _c"></span>oses<span class="_ _e"> </span>ho<span class="_ _3"></span>w<span class="_ _e"> </span>to<span class="_ _e"> </span>handle<span class="_ _b"> </span>the<span class="_ _e"> </span>error<span class="_ _b"> </span>dep<span class="_ _c"></span>ending<span class="_ _e"> </span>on<span class="_ _b"> </span>the<span class="_ _e"> </span>context</div><div class="t m0 x1 hc y146 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">ret<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>f(n);</span></div><div class="t m0 x1 hc y147 ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span><span class="ff13">Return<span class="_ _8"> </span>code<span class="_ _11"> </span>handling</span></div><div class="t m0 x1 hc y148 ff6 fs7 fc4 sc0 ls0 ws0">if<span class="_ _11"> </span><span class="ffa fc0">(<span class="fc6">!</span>ret)</span></div><div class="t m0 x14 hc y149 ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>error<span class="_ _8"> </span>handling</div><div class="t m0 x1 hc y14a ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">v<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span>*</span>ret<span class="_ _11"> </span><span class="fc6">+<span class="_ _8"> </span>3</span>;<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>execute<span class="_ _11"> </span>without<span class="_ _11"> </span>checking</span></span></div><div class="t m0 x1 hc y14b ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span><span class="ff13">Exception<span class="_ _8"> </span>handling</span></div><div class="t m0 x1 hc y14c ffa fs7 fc0 sc0 ls0 ws0">ret.value();<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>throw<span class="_ _11"> </span>an<span class="_ _11"> </span>exception<span class="_ _8"> </span>if<span class="_ _11"> </span>there<span class="_ _8"> </span>is<span class="_ _11"> </span>a<span class="_ _11"> </span>problem</span></div><div class="t m0 x1 hc y14d ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span><span class="ff13">Monadic<span class="_ _8"> </span>operations</span></div><div class="t m0 x1 hc y14e ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">lambda<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>[](</span><span class="fc5">int<span class="_ _11"> </span><span class="ffa fc0">x)<span class="_ _8"> </span>{<span class="_ _11"> </span></span></span>return<span class="_ _8"> </span><span class="ffa fc0">(x<span class="_ _11"> </span><span class="fc6">><span class="_ _11"> </span>3</span>)<span class="_ _8"> </span><span class="fc6">?<span class="_ _11"> </span>4<span class="_ _11"> </span>:<span class="_ _8"> </span></span>std<span class="fc6">::</span>unexpected(Error<span class="fc6">::</span>Invalid);<span class="_ _11"> </span>};</span></div><div class="t m0 x1 hc y14f ffa fs7 fc0 sc0 ls0 ws0">ret.and_then(lambda)<span class="_ _2c"> </span><span class="ffd fc7">//<span class="_ _11"> </span>pass<span class="_ _8"> </span>the<span class="_ _11"> </span>value<span class="_ _11"> </span>to<span class="_ _8"> </span>another<span class="_ _11"> </span>function</span></div><div class="t m0 x17 hc y150 ffa fs7 fc0 sc0 ls0 ws0">.tranform([](<span class="ff6 fc5">int<span class="_ _11"> </span></span>x)<span class="_ _8"> </span>{<span class="_ _11"> </span><span class="ff6 fc4">return<span class="_ _11"> </span></span>x<span class="_ _8"> </span><span class="fc6">+<span class="_ _11"> </span>4</span>;<span class="_ _8"> </span>};)<span class="_ _22"> </span><span class="ffd fc7">//<span class="_ _11"> </span>transform<span class="_ _8"> </span>the<span class="_ _11"> </span>previous<span class="_ _11"> </span>value</span></div><div class="t m0 x17 hc y151 ffa fs7 fc0 sc0 ls0 ws0">.transform_error([](<span class="ff6 fc4">auto<span class="_ _11"> </span></span>error_code){<span class="_ _8"> </span><span class="ffd fc7">/*error<span class="_ _11"> </span>handling*/<span class="_ _2d"> </span></span>};</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">32/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf24" class="pf w0 h0" data-page-no="24"><div class="pc pc24 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAI4ElEQVR42u3asU0DQRCGUS+6EdGKGhARFSBEjERnNEE5BBRBB0TWRkxyZA6NddbB2H6vAcNvLH0ert09PG0AAKCMz4/3KysAAFCNSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAYKdlphUAAKgjIlxSAQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAABYbjIBLDPGOLPfqPfubQWgCJdUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBADgzLTOtAABAHRHhkgoAQDkiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAoZTIBsDPGWPsleu92pshf4//yWYD9XFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQDgwrTMtAIAAHVEhEsqAADliFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAADjaZAM7bGKPOD9N7944AcAiXVAAARCoAAIhUAABOjmdSgXJKPUf7Kw/aAqzBJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAAAcp2WmFQAAqCMiXFIBAChHpAIAIFIBAECkAgAgUgEA4FiTCQBYbIxhhBPVezcClbmkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAgNpaZloBAIA6IsIlFQCAciYTADtjjLVfovduZwBEKgC+MlXkCxvs59/9AACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBgXS0zrQAAQB0R4ZIKAEA5IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEA4C9N29dbKwBcuK/nNyMAddw/vrR2cz1vvzebeZ4NAgBACT++zjr+gUqxqQAAAABJRU5ErkJggg=="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Alternative<span class="_ _8"> </span>Erro<span class="_ _3"></span>r<span class="_ _8"> </span>Handling<span class="_ _8"> </span>App<span class="_ _3"></span>roaches<span class="_ _2e"> </span>1/2</div><div class="t m0 xc ha y152 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Global<span class="_ _6"> </span>state<span class="ff4">,<span class="_ _e"> </span>e.g.<span class="_ _5"> </span><span class="ffe">errno</span></span></span></div><div class="t m0 xb h5 y153 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Easily<span class="_ _b"> </span>forget<span class="_ _b"> </span>to<span class="_ _b"> </span>check<span class="_ _b"> </span>fo<span class="_ _3"></span>r<span class="_ _b"> </span>failures</div><div class="t m0 xb h5 y154 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Error<span class="_ _b"> </span>p<span class="_ _3"></span>ropagation<span class="_ _b"> </span>using<span class="_ _2d"> </span><span class="ffe">if<span class="_ _18"> </span></span>statements<span class="_ _b"> </span>and<span class="_ _b"> </span>early<span class="_ _1c"> </span><span class="ffe">return<span class="_ _2d"> </span></span>is<span class="_ _b"> </span>manual</div><div class="t m0 xb h5 y155 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>No<span class="_ _b"> </span>compiler<span class="_ _b"> </span>optimizations<span class="_ _b"> </span>due<span class="_ _b"> </span>to<span class="_ _b"> </span>global<span class="_ _b"> </span>state</div><div class="t m0 xc ha y156 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Simple<span class="_ _6"> </span>error<span class="_ _e"> </span>co<span class="_ _c"></span>de<span class="ff4">,<span class="_ _e"> </span>e.g.<span class="_ _5"> </span><span class="ffe">int<span class="_ _2a"> </span></span>,<span class="_ _14"> </span><span class="ffe">enum<span class="_ _2a"> </span></span>,<span class="_ _e"> </span>etc.</span></span></div><div class="t m0 xb h5 y157 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Easily<span class="_ _b"> </span>forget<span class="_ _b"> </span>to<span class="_ _b"> </span>check<span class="_ _b"> </span>fo<span class="_ _3"></span>r<span class="_ _b"> </span>failures<span class="_ _b"> </span>(wo<span class="_ _3"></span>rka<span class="_ _3"></span>round<span class="_ _18"> </span><span class="ffe">[[nodiscard]]<span class="_ _10"> </span></span>)</div><div class="t m0 xb h5 y158 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Error<span class="_ _b"> </span>p<span class="_ _3"></span>ropagation<span class="_ _b"> </span>using<span class="_ _2d"> </span><span class="ffe">if<span class="_ _18"> </span></span>statements<span class="_ _b"> </span>and<span class="_ _b"> </span>early<span class="_ _1c"> </span><span class="ffe">return<span class="_ _2d"> </span></span>is<span class="_ _b"> </span>manual</div><div class="t m0 xb h5 y159 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Potential<span class="_ _b"> </span>erro<span class="_ _3"></span>r<span class="_ _b"> </span>propagation<span class="_ _10"> </span>through<span class="_ _b"> </span>different<span class="_ _b"> </span>contexts<span class="_ _b"> </span>and<span class="_ _b"> </span>losing<span class="_ _b"> </span>initial<span class="_ _b"> </span>error</div><div class="t m0 x1f h5 y15a ff4 fs3 fc0 sc0 ls0 ws0">info<span class="_ _3"></span>rmation</div><div class="t m0 xb h5 y15b ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Constructor<span class="_ _b"> </span>erro<span class="_ _3"></span>rs<span class="_ _b"> </span>cannot<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>handled</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">33/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf25" class="pf w0 h0" data-page-no="25"><div class="pc pc25 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Alternative<span class="_ _8"> </span>Erro<span class="_ _3"></span>r<span class="_ _8"> </span>Handling<span class="_ _8"> </span>App<span class="_ _3"></span>roaches<span class="_ _2e"> </span>2/2</div><div class="t m0 xc ha y15c ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">std::error_code<span class="_ _10"> </span><span class="ff4">,<span class="_ _e"> </span>standa<span class="_ _3"></span>rdized<span class="_ _e"> </span>erro<span class="_ _3"></span>r<span class="_ _e"> </span>co<span class="_ _c"></span>de</span></span></div><div class="t m0 xb h5 y15d ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Easily<span class="_ _b"> </span>forget<span class="_ _b"> </span>to<span class="_ _b"> </span>check<span class="_ _b"> </span>fo<span class="_ _3"></span>r<span class="_ _b"> </span>failures<span class="_ _b"> </span>(wo<span class="_ _3"></span>rka<span class="_ _3"></span>round<span class="_ _18"> </span><span class="ffe">[[nodiscard]]<span class="_ _10"> </span></span>)</div><div class="t m0 xb h5 y15e ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Error<span class="_ _b"> </span>p<span class="_ _3"></span>ropagation<span class="_ _b"> </span>using<span class="_ _2d"> </span><span class="ffe">if<span class="_ _18"> </span></span>statements<span class="_ _b"> </span>and<span class="_ _b"> </span>early<span class="_ _1c"> </span><span class="ffe">return<span class="_ _2d"> </span></span>is<span class="_ _b"> </span>manual</div><div class="t m0 xb h5 y15f ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Co<span class="_ _c"></span>de<span class="_ _b"> </span>bloating<span class="_ _b"> </span>fo<span class="_ _3"></span>r<span class="_ _b"> </span>adding<span class="_ _b"> </span>new<span class="_ _b"> </span>enumerators<span class="_ _b"> </span>(see<span class="_ _b"> </span><span class="ffe">Your<span class="_"> </span>own<span class="_"> </span>error<span class="_"> </span>code</span>)</div><div class="t m0 xb h5 y160 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Constructor<span class="_ _b"> </span>erro<span class="_ _3"></span>rs<span class="_ _b"> </span>cannot<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>handled</div><div class="t m0 xc ha y161 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff1">Supp<span class="_ _c"></span>o<span class="_ _3"></span>rting<span class="_ _6"> </span>libra<span class="_ _3"></span>ries<span class="ff4">,<span class="_ _e"> </span>e.g.<span class="_ _11"> </span><span class="ffe">Boost<span class="_"> </span>Outcome</span>,<span class="_ _b"> </span><span class="ffe">STX</span>,<span class="_ _e"> </span>etc.</span></span></div><div class="t m0 xb h5 y162 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Require<span class="_ _b"> </span>external<span class="_ _b"> </span>dep<span class="_ _c"></span>endencies</div><div class="t m0 xb h5 y163 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Constructor<span class="_ _b"> </span>erro<span class="_ _3"></span>rs<span class="_ _b"> </span>cannot<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>handled<span class="_ _b"> </span>in<span class="_ _b"> </span>a<span class="_ _b"> </span>direct<span class="_ _b"> </span>w<span class="_ _3"></span>ay</div><div class="t m0 xb h5 y164 ff4 fs3 fc0 sc0 ls0 ws0">-<span class="_ _a"> </span>Extra<span class="_ _b"> </span>logic<span class="_ _b"> </span>for<span class="_ _b"> </span>managing<span class="_ _b"> </span>return<span class="_ _b"> </span>values</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">34/58</div><a class="l" href="https://akrzemi1.wordpress.com/2017/07/12/your-own-error-code/"><div class="d m1" style="border-style:none;position:absolute;left:271.291000px;bottom:137.243000px;width:101.370000px;height:11.821000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://www.boost.org/doc/libs/1_77_0/libs/outcome/doc/html/index.html"><div class="d m1" style="border-style:none;position:absolute;left:173.297000px;bottom:94.335000px;width:76.447000px;height:11.690000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="https://lamarrr.github.io/STX/"><div class="d m1" style="border-style:none;position:absolute;left:254.418000px;bottom:94.335000px;width:19.175000px;height:11.690000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf26" class="pf w0 h0" data-page-no="26"><div class="pc pc26 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y20 ff1 fs0 fc0 sc0 ls0 ws0">Sma<span class="_ _d"></span>rt<span class="_ _1"> </span>p<span class="_ _0"></span>ointers</div><a class="l" href="#pf26" data-dest-detail='[38,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:132.432000px;width:170.118000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf27" class="pf w0 h0" data-page-no="27"><div class="pc pc27 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIf0lEQVR42u3ZsQkCMQCG0UQuWDqDWDmBiLVwK1g4j0u4gYUzCBYO4QZWV3mmiZ2loCDk8L0Jwp/mI4mzxSoAAEA1rpfzyAoAANRGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAA8BJzzlYAAKAeKSUvqQAAVEekAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUk0AAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkmgAAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAvNUM5aD3vm83WxcGw3I6HowAwBdiztkKAADUI6Xkux8AgOqIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAPDfmm43tQIAv3Nb740AfGS+bGOcjEv3CKGUYhAAAKrwBLWKHQL7XTl8AAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Sma<span class="_ _3"></span>rt<span class="_ _8"> </span>P<span class="_ _3"></span>ointers</div><div class="t m0 x1 ha y21 ff1 fs6 fc0 sc0 ls0 ws0">Sma<span class="_ _3"></span>rt<span class="_ _6"> </span>p<span class="_ _c"></span>ointer<span class="_ _e"> </span><span class="ff4">is<span class="_ _b"> </span>a<span class="_ _e"> </span>p<span class="_ _c"></span>ointer-lik<span class="_ _3"></span>e<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _e"> </span>with<span class="_ _b"> </span>some<span class="_ _e"> </span>additional<span class="_ _e"> </span>functionalit<span class="_ _3"></span>y<span class="_ _7"></span>,<span class="_ _e"> </span>e.g.<span class="_ _11"> </span><span class="ff8">automatic</span></span></div><div class="t m0 x1 ha y5d ff8 fs6 fc0 sc0 ls0 ws0">memo<span class="_ _3"></span>ry<span class="_ _e"> </span>deallo<span class="_ _c"></span>cation<span class="_ _e"> </span><span class="ff4">(when<span class="_ _e"> </span>the<span class="_ _b"> </span>p<span class="_ _c"></span>ointer<span class="_ _e"> </span>is<span class="_ _b"> </span>no<span class="_ _e"> </span>longer<span class="_ _e"> </span>in<span class="_ _e"> </span>use,<span class="_ _e"> </span>the<span class="_ _b"> </span>memory<span class="_ _b"> </span>it<span class="_ _e"> </span>p<span class="_ _c"></span>oints<span class="_ _b"> </span>to<span class="_ _e"> </span>is</span></div><div class="t m0 x1 ha yc4 ff4 fs6 fc0 sc0 ls0 ws0">deallo<span class="_ _c"></span>cated),<span class="_ _b"> </span>reference<span class="_ _e"> </span>counting,<span class="_ _e"> </span>etc.</div><div class="t m0 x1 ha y165 ff4 fs6 fc9 sc0 ls0 ws0">C++11<span class="_ _e"> </span><span class="fc0">p<span class="_ _3"></span>rovides<span class="_ _e"> </span>three<span class="_ _e"> </span>sma<span class="_ _3"></span>rt<span class="_ _e"> </span>pointer<span class="_ _e"> </span>types:</span></div><div class="t m0 xc ha y166 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff6">std::unique_ptr</span></div><div class="t m0 xc ha y167 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff6">std::shared_ptr</span></div><div class="t m0 xc ha y168 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff6">std::weak_ptr</span></div><div class="t m0 x1 ha y169 ff4 fs6 fc0 sc0 ls0 ws0">Sma<span class="_ _3"></span>rt<span class="_ _e"> </span>p<span class="_ _c"></span>ointers<span class="_ _b"> </span>prevent<span class="_ _b"> </span>most<span class="_ _e"> </span>situations<span class="_ _e"> </span>of<span class="_ _e"> </span>memo<span class="_ _3"></span>ry<span class="_ _e"> </span>leaks<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span>making<span class="_ _b"> </span>the<span class="_ _e"> </span>memory</div><div class="t m0 x1 ha y16a ff4 fs6 fc0 sc0 ls0 ws0">deallo<span class="_ _c"></span>cation<span class="_ _b"> </span>automatic</div><div class="t m0 xc hc y16b ffa fs7 fc3 sc0 ls0 ws0">C++<span class="_ _11"> </span>Smart<span class="_ _8"> </span>Pointers</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">35/58</div><a class="l" href="http://embeddedartistry.com/blog/2016/9/19/rfr0r76r0ovd0gk574kfsldxfbklgs"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:2.900000px;width:86.725000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf28" class="pf w0 h0" data-page-no="28"><div class="pc pc28 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Sma<span class="_ _3"></span>rt<span class="_ _8"> </span>P<span class="_ _3"></span>ointers<span class="_ _8"> </span>Benefits</div><div class="t m0 xc ha y16c ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">If<span class="_ _e"> </span>a<span class="_ _e"> </span>sma<span class="_ _3"></span>rt<span class="_ _e"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>go<span class="_ _c"></span>es<span class="_ _e"> </span><span class="ff8">out-of-scop<span class="_ _c"></span>e</span>,<span class="_ _b"> </span>the<span class="_ _e"> </span>app<span class="_ _3"></span>ropriate<span class="_ _b"> </span>metho<span class="_ _c"></span>d<span class="_ _e"> </span>to<span class="_ _b"> </span>release<span class="_ _e"> </span>resources</span></div><div class="t m0 x6 ha y16d ff4 fs6 fc0 sc0 ls0 ws0">is<span class="_ _e"> </span>called<span class="_ _b"> </span>automatically<span class="_ _d"></span>.<span class="_ _11"> </span>The<span class="_ _e"> </span>memo<span class="_ _3"></span>ry<span class="_ _e"> </span>is<span class="_ _e"> </span>not<span class="_ _e"> </span>left<span class="_ _b"> </span>dangling</div><div class="t m0 xc ha y16e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">Smart<span class="_ _b"> </span>p<span class="_ _c"></span>ointers<span class="_ _e"> </span>will<span class="_ _e"> </span>automatically<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _e"> </span>set<span class="_ _b"> </span>to<span class="_ _14"> </span><span class="ffe">nullptr<span class="_ _18"> </span></span>if<span class="_ _e"> </span>not<span class="_ _b"> </span>initialized<span class="_ _e"> </span>or<span class="_ _b"> </span>when</span></div><div class="t m0 x6 ha y16f ff4 fs6 fc0 sc0 ls0 ws0">memo<span class="_ _3"></span>ry<span class="_ _e"> </span>has<span class="_ _e"> </span>b<span class="_ _c"></span>een<span class="_ _b"> </span>released</div><div class="t m0 xc ha y170 ff7 fs6 fc0 sc0 ls0 ws0">•</div><div class="t m0 xd ha y171 ffe fs6 fc0 sc0 ls0 ws0">std::shared_ptr<span class="_ _18"> </span><span class="ff4">provides<span class="_ _b"> </span>automatic<span class="_ _e"> </span>reference<span class="_ _e"> </span>count</span></div><div class="t m0 xc ha y172 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _a"> </span><span class="ff4">If<span class="_ _e"> </span>a<span class="_ _e"> </span>sp<span class="_ _c"></span>ecial<span class="_ _2d"> </span><span class="ffe">delete<span class="_ _14"> </span></span>function<span class="_ _b"> </span>needs<span class="_ _e"> </span>to<span class="_ _e"> </span>b<span class="_ _c"></span>e<span class="_ _b"> </span>called,<span class="_ _e"> </span>it<span class="_ _e"> </span>will<span class="_ _e"> </span>be<span class="_ _e"> </span>sp<span class="_ _c"></span>ecified<span class="_ _b"> </span>in<span class="_ _e"> </span>the<span class="_ _e"> </span>p<span class="_ _c"></span>ointer</span></div><div class="t m0 x6 ha y173 ff4 fs6 fc0 sc0 ls0 ws0">t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _e"> </span>and<span class="_ _b"> </span>declaration,<span class="_ _b"> </span>and<span class="_ _e"> </span>will<span class="_ _e"> </span>automatically<span class="_ _e"> </span>be<span class="_ _e"> </span>called<span class="_ _e"> </span>on<span class="_ _e"> </span>delete</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">36/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf29" class="pf w0 h0" data-page-no="29"><div class="pc pc29 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAJA0lEQVR42u3bsU0DMQCG0TM6i8piAEqqTIAQSpECiTK7ZAIGuA0YIhukCAUbpGEDKuQKN0dHGYkjBDt5b4DI+p3i050u3NzedwAAUI2315cLKwAAUBuRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgDAt1BKsQIAAPWIMXqSCgBAdUQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABq1zd01pyzC2O/lJIRAOAEeJIKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAZ6Y3AQDAj8zmi7/78d12Y+Gu60IppZWz5pxdGPullIwAAK2LMXrdDwBAdUQqAAAiFQAARCoAAM1p6cMpAADOgQ+nAACokUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAAP+rb+Wgs/mirWV3242/FwDANKGUYgUAAOoRY/S6HwCA6ohUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAADUrm/orDlnFwYAME1KqaHTepIKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBINQEAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAAD8Tm8C4FQth8EIB7FerYwAHFkopbRy1pyzCwMAmCal1MpRY4xe9wMAUB2RCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAjelNAJyq5TAY4SDWq5URgCMLpZRWzppzdmEAANOklFo5aozR634AAKojUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAACoRnh/urYCAO16f3g2ApyY2d1jCFeX48dn143jaBAAAKrwBZaZPeehJuDKAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::unique_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Unique<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _2f"> </span>1/4</span></div><div class="t m0 x11 ha y174 ff6 fs6 fc0 sc0 ls0 ws0">std::unique_ptr<span class="_ _18"> </span><span class="ff4">is<span class="_ _e"> </span>used<span class="_ _e"> </span>to<span class="_ _e"> </span>manage<span class="_ _b"> </span>any<span class="_ _e"> </span>dynamically<span class="_ _e"> </span>allo<span class="_ _c"></span>cated<span class="_ _b"> </span>object<span class="_ _e"> </span>that<span class="_ _e"> </span>is<span class="_ _b"> </span>not</span></div><div class="t m0 x1 ha y175 ff4 fs6 fc0 sc0 ls0 ws0">sha<span class="_ _3"></span>red<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span>multiple<span class="_ _e"> </span>objects</div><div class="t m0 x1 he y176 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y177 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 he y178 ff6 fs5 fc4 sc0 ls0 ws0">struct<span class="_ _6"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ff11 fc0">{</span></span></div><div class="t m0 x16 he y179 ff11 fs5 fc0 sc0 ls0 ws0">A()<span class="_ _13"> </span>{<span class="_ _6"> </span>std<span class="fc6">::</span>cout<span class="_ _8"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"Constructor<span class="ff6 fcd">\n</span>"</span></span>;<span class="_ _6"> </span>}<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>called<span class="_ _8"> </span>when<span class="_ _6"> </span>A()</span></div><div class="t m0 x16 he y17a ff14 fs5 fc0 sc0 ls0 ws0">∼<span class="ff11">A()<span class="_ _6"> </span>{<span class="_ _8"> </span>std<span class="fc6">::</span>cout<span class="_ _8"> </span><span class="fc6"><<<span class="_ _6"> </span><span class="fca">"Destructor<span class="ff6 fcd">\n</span>"</span></span>;<span class="_ _13"> </span>}<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>called<span class="_ _8"> </span>when<span class="_ _6"> </span>u_ptr1,</span></span></div><div class="t m0 x1 he y17b ff11 fs5 fc0 sc0 ls0 ws0">};<span class="_ _30"> </span><span class="ffd fc7">//<span class="_ _6"> </span>u_ptr2<span class="_ _8"> </span>are<span class="_ _6"> </span>out-of-scope</span></div><div class="t m0 x1 he y17c ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y17d ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _31"> </span><span class="ff11 fc0">raw_ptr<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span></span></span>new<span class="_ _8"> </span><span class="ff11 fc0">A();</span></div><div class="t m0 x16 he y17e ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>u_ptr1(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A());</div><div class="t m0 x16 he y17f ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>u_ptr2(raw_ptr);</div><div class="t m0 x1 he y180 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _13"> </span>std::unique_ptr<A><span class="_ _6"> </span>u_ptr3(raw_ptr);<span class="_ _6"> </span>//<span class="_ _8"> </span>no<span class="_ _6"> </span>compile<span class="_ _8"> </span>error,<span class="_ _6"> </span>but<span class="_ _8"> </span>wrong!!<span class="_ _6"> </span>(not<span class="_ _6"> </span>unique)</div><div class="t m0 x1 he y181 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _13"> </span>u_ptr1<span class="_ _6"> </span>=<span class="_ _6"> </span>raw_ptr;<span class="_ _23"> </span>//<span class="_ _6"> </span>compile<span class="_ _6"> </span>error<span class="_ _8"> </span>(not<span class="_ _6"> </span>unique)</div><div class="t m0 x1 he y182 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _13"> </span>u_ptr1<span class="_ _6"> </span>=<span class="_ _6"> </span>u_ptr2;<span class="_ _32"> </span>//<span class="_ _6"> </span>compile<span class="_ _8"> </span>error<span class="_ _6"> </span>(not<span class="_ _8"> </span>unique)</div><div class="t m0 x16 he y183 ff11 fs5 fc0 sc0 ls0 ws0">u_ptr1<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>move(u_ptr2);<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>delete<span class="_ _6"> </span>u_ptr1;</span></div><div class="t m0 x1 he y184 ff11 fs5 fc0 sc0 ls0 ws0">}<span class="_ _33"> </span><span class="ffd fc7">//<span class="_ _6"> </span>u_ptr1<span class="_ _8"> </span>=<span class="_ _6"> </span>u_ptr2;</span></div><div class="t m0 x20 he y185 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _6"> </span>u_ptr2<span class="_ _8"> </span>=<span class="_ _6"> </span>nullptr</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">37/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2a" class="pf w0 h0" data-page-no="2a"><div class="pc pc2a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAJBklEQVR42u3ZvY2TURCGUV/0jYhG1ICIqAAhYiQ6o4ktZwOKoAOi1URMYjJEssgr/43X51Rgvzd5NN/68OnLDgAAxvj54/GNFQAAmEakAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAADw1+puKwAAMEdEuKQCADCOSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAwL3bbui3VpUH4/8y0wgA8Aq4pAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAntbrbCgAAzBERLqkAAIwjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAOCFNhMcrqpe2T/KTM8KAAzkkgoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAFzU6m4rAAAwR0S4pAIAMI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAAMfZTHC4qjLCOWSmwW/iRQDgYlxSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAgJNa3W0FAADmiAiXVAAAxhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgBwYzYTHK6qjHAtmWkEALgfLqkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAMBFre62AgAAc0SESyoAAOOIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAgEE2ExyuqoxwDplpBADgXy6pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQDgtq3utgIAAHNEhEsqAADjiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAABwnM0Eh6sqI1xLZhoBAO6HSyoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAAHBRq7utAADAHBHhkgoAwDgiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAC3bjMB51ZVRuDeZKYRAI7hkgoAwDguqQAAzzrV90AfWF7KJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAXNdmAgCA52SmEa7CJRUAAJEKAAAiFQAAkQoAAMda3W0FAADmiAiXVAAAxhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAOJft6ft7KwBwJ359fTACzPfx87e13r3dP/3e7fb7vUEAABjhDyjmRCGPLxHDAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::unique_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Unique<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _2f"> </span>2/4</span></div><div class="t m0 x11 ha y21 ff6 fs6 fc0 sc0 ls0 ws0">std::unique_ptr<span class="_ _18"> </span><span class="ff4">metho<span class="_ _c"></span>ds</span></div><div class="t m0 xc ha y186 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">get<span class="fc0">()<span class="_ _18"> </span><span class="ff4">returns<span class="_ _e"> </span>the<span class="_ _e"> </span>underlying<span class="_ _e"> </span>pointer</span></span></span></div><div class="t m0 xc ha y187 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">operator*<span class="_ _16"> </span>operator-><span class="_ _14"> </span></span><span class="ff4">dereferences<span class="_ _b"> </span>p<span class="_ _c"></span>ointer<span class="_ _e"> </span>to<span class="_ _b"> </span>the<span class="_ _e"> </span>managed<span class="_ _e"> </span>object</span></div><div class="t m0 xc ha y188 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">operator[]<span class="_ _18"> </span></span><span class="ff4">provides<span class="_ _b"> </span>indexed<span class="_ _e"> </span>access<span class="_ _e"> </span>to<span class="_ _e"> </span>the<span class="_ _b"> </span>stored<span class="_ _b"> </span>arra<span class="_ _3"></span>y<span class="_ _e"> </span>(if<span class="_ _e"> </span>it<span class="_ _b"> </span>supp<span class="_ _c"></span>o<span class="_ _3"></span>rts<span class="_ _e"> </span>random</span></div><div class="t m0 x6 ha y189 ff4 fs6 fc0 sc0 ls0 ws0">access<span class="_ _e"> </span>iterato<span class="_ _3"></span>r)</div><div class="t m0 xc ha y18a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">release<span class="fc0">()<span class="_ _18"> </span><span class="ff4">returns<span class="_ _e"> </span>a<span class="_ _e"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>to<span class="_ _e"> </span>the<span class="_ _e"> </span>managed<span class="_ _b"> </span>object<span class="_ _e"> </span>and<span class="_ _e"> </span>releases<span class="_ _e"> </span>the<span class="_ _b"> </span>ownership</span></span></span></div><div class="t m0 xc ha y18b ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">reset<span class="fc0">(ptr)<span class="_ _18"> </span><span class="ff4">replaces<span class="_ _e"> </span>the<span class="_ _e"> </span>managed<span class="_ _e"> </span>object<span class="_ _b"> </span>with<span class="_ _e"> </span></span>ptr</span></span></div><div class="t m0 x1 ha y18c ff4 fs6 fc0 sc0 ls0 ws0">Utilit<span class="_ _3"></span>y<span class="_ _e"> </span>method:<span class="_ _5"> </span><span class="ffe fc8">std::make_unique<T><span class="fc0">()<span class="_ _18"> </span></span></span>creates<span class="_ _e"> </span>a<span class="_ _b"> </span>unique<span class="_ _e"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>to<span class="_ _b"> </span>a<span class="_ _e"> </span>class<span class="_ _18"> </span><span class="ffe">T<span class="_ _18"> </span></span>that</div><div class="t m0 x1 ha y18d ff4 fs6 fc0 sc0 ls0 ws0">manages<span class="_ _e"> </span>a<span class="_ _b"> </span>new<span class="_ _e"> </span>object</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">38/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2b" class="pf w0 h0" data-page-no="2b"><div class="pc pc2b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWJnJYIW8p88zwThS/Py59VmlwAAIIzr5TyzAgAA0YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACecq3VCgAAxFFKcUkFACAckQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAf6ib01nEcfRgAwHf6vp/Qa11SAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAA3sq1VisAABBHKcUlFQCAcEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAPyZbjgurQAAL932JyPA7623h5wX8zbcU2qtGQQAgBAeIbMaApiOjO4AAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::unique_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Unique<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _2f"> </span>3/4</span></div><div class="t m0 x1 he y18e ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y18f ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 he y190 ff6 fs5 fc4 sc0 ls0 ws0">struct<span class="_ _6"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ff11 fc0">{</span></span></div><div class="t m0 x16 he y191 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc0">value;</span></div><div class="t m0 x1 he y192 ff11 fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 he y193 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y194 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>u_ptr1(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A());</div><div class="t m0 x16 he y195 ff11 fs5 fc0 sc0 ls0 ws0">u_ptr1<span class="fc6">-></span>value;<span class="_ _34"> </span><span class="ffd fc7">//<span class="_ _6"> </span>dereferencing</span></div><div class="t m0 x16 he y196 ff11 fs5 fc0 sc0 ls0 ws0">(<span class="fc6">*</span>u_ptr1).value;<span class="_ _35"> </span><span class="ffd fc7">//<span class="_ _6"> </span>dereferencing</span></div><div class="t m0 x16 he y197 ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _6"> </span><span class="ff11 fc0">u_ptr2<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>make_unique<span class="fc6"><</span>A<span class="fc6">></span>();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>create<span class="_ _6"> </span>a<span class="_ _8"> </span>new<span class="_ _6"> </span>unique<span class="_ _8"> </span>pointer</span></span></div><div class="t m0 x16 he y198 ff11 fs5 fc0 sc0 ls0 ws0">u_ptr1.reset(<span class="ff6 fc4">new<span class="_ _6"> </span></span>A());<span class="_ _36"> </span><span class="ffd fc7">//<span class="_ _6"> </span>reset</span></div><div class="t m0 x16 he y199 ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _6"> </span><span class="ff11 fc0">raw_ptr<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span></span>u_ptr1.release();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>release</span></span></div><div class="t m0 x16 he y19a ff6 fs5 fc4 sc0 ls0 ws0">delete<span class="_ _6"> </span><span class="ff11 fc0">raw_ptr;</span></div><div class="t m0 x16 he y19b ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><</span>A[]<span class="fc6">><span class="_ _6"> </span></span>u_ptr3(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A[<span class="fc6">10</span>]);</div><div class="t m0 x16 he y19c ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="ff11 fc6">&<span class="_ _6"> </span><span class="fc0">obj<span class="_ _8"> </span></span>=<span class="_ _8"> </span><span class="fc0">u_ptr3[</span>3<span class="fc0">];<span class="_ _37"> </span><span class="ffd fc7">//<span class="_ _6"> </span>access</span></span></span></div><div class="t m0 x1 he y19d ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">39/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2c" class="pf w0 h0" data-page-no="2c"><div class="pc pc2c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQ3CMBRF0RjFooqYAVExAULUSGzGEoxDwRBsQBW5wo3pMgCh+EHnTGA9N1c/7Q6nDgAAwng+7isrAAAQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAGCSaq1WAAAgjpyzSyoAAOGIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAJv2C3lpK8WEAAN8ZhmFBr3VJBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApJoAAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA/lOqtVoBAIA4cs4uqQAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAABz9ON1awUA+InX+WYEmG9/vKS0Wbfx3XWtNYMAABDCB04QGgK4ZGEDAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::unique_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Unique<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _2f"> </span>4/4</span></div><div class="t m0 x1 ha y21 ff1 fs6 fc0 sc0 ls0 ws0">Implement<span class="_ _6"> </span>a<span class="_ _e"> </span>custom<span class="_ _6"> </span>deleter</div><div class="t m0 x1 hc y8e ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _2d"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 hc y10a ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _2d"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 hc y8f ff6 fs7 fc4 sc0 ls0 ws0">struct<span class="_ _11"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ffa fc0">{</span></span></div><div class="t m0 x14 hc y10b ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">value;</span></div><div class="t m0 x1 hc y10c ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 hc y10d ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x14 hc y10e ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">DeleteLambda<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>[](A<span class="fc6">*<span class="_ _11"> </span></span>x)<span class="_ _8"> </span>{</span></div><div class="t m0 x15 hc y10f ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"delete"<span class="_ _11"> </span></span><<<span class="_ _11"> </span></span>std<span class="fc6">::</span>endl;</div><div class="t m0 x15 hc y110 ff6 fs7 fc4 sc0 ls0 ws0">delete<span class="_ _11"> </span><span class="ffa fc0">x;</span></div><div class="t m0 x14 hc y111 ffa fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x14 hc y113 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>unique_ptr<span class="fc6"><</span>A,<span class="_ _11"> </span><span class="ff6 fc4">decltype</span>(DeleteLambda)<span class="fc6">></span></div><div class="t m0 x15 hc y19e ffa fs7 fc0 sc0 ls0 ws0">x(<span class="ff6 fc4">new<span class="_ _11"> </span></span>A(),<span class="_ _8"> </span>DeleteLambda);</div><div class="t m0 x1 hc y19f ffa fs7 fc0 sc0 ls0 ws0">}<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>print<span class="_ _11"> </span>"delete"</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">40/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2d" class="pf w0 h0" data-page-no="2d"><div class="pc pc2d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::shared_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Sha<span class="_ _3"></span>red<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _38"> </span>1/3</span></div><div class="t m0 x11 ha y1a0 ff6 fs6 fc0 sc0 ls0 ws0">std::shared_ptr<span class="_ _18"> </span><span class="ff4">is<span class="_ _e"> </span>the<span class="_ _e"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>type<span class="_ _e"> </span>to<span class="_ _e"> </span>be<span class="_ _e"> </span>used<span class="_ _e"> </span>fo<span class="_ _3"></span>r<span class="_ _e"> </span>memory<span class="_ _b"> </span>that<span class="_ _e"> </span>can<span class="_ _e"> </span>be<span class="_ _e"> </span>owned<span class="_ _b"> </span>by</span></div><div class="t m0 x1 ha y1a1 ff4 fs6 fc0 sc0 ls0 ws0">multiple<span class="_ _e"> </span>resources<span class="_ _b"> </span>at<span class="_ _e"> </span>one<span class="_ _e"> </span>time</div><div class="t m0 x11 h5 y1a2 ffe fs3 fc0 sc0 ls0 ws0">std::shared_ptr<span class="_ _2d"> </span><span class="ff4">maintains<span class="_ _b"> </span>a<span class="_ _b"> </span>reference<span class="_ _b"> </span>count<span class="_ _b"> </span>of<span class="_ _b"> </span>p<span class="_ _c"></span>ointer<span class="_ _b"> </span>objects.<span class="_ _8"> </span>Data<span class="_ _b"> </span>managed<span class="_ _b"> </span>b<span class="_ _3"></span>y</span></div><div class="t m0 x11 h5 y1a3 ffe fs3 fc0 sc0 ls0 ws0">std::shared_ptr<span class="_ _2d"> </span><span class="ff4">is<span class="_ _b"> </span>only<span class="_ _b"> </span>freed<span class="_ _b"> </span>when<span class="_ _b"> </span>there<span class="_ _b"> </span>are<span class="_ _10"> </span>no<span class="_ _b"> </span>remaining<span class="_ _b"> </span>objects<span class="_ _b"> </span>p<span class="_ _c"></span>ointing<span class="_ _b"> </span>to<span class="_ _b"> </span>the<span class="_ _b"> </span>data</span></div><div class="t m0 x1 he y1a4 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y1a5 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 he y1a6 ff6 fs5 fc4 sc0 ls0 ws0">struct<span class="_ _6"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ff11 fc0">{</span></span></div><div class="t m0 x16 he y1a7 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc0">value;</span></div><div class="t m0 x1 he y1a8 ff11 fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 he y1a9 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y1aa ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>shared_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>sh_ptr1(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A());</div><div class="t m0 x16 he y1ab ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>shared_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>sh_ptr2(sh_ptr1);</div><div class="t m0 x16 he y1ac ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>shared_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>sh_ptr3(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A());</div><div class="t m0 x16 he y1ad ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr3<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">nullptr</span></span>;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>allowed,<span class="_ _6"> </span>the<span class="_ _8"> </span>underlying<span class="_ _6"> </span>pointer<span class="_ _8"> </span>is<span class="_ _6"> </span>deallocated</span></div><div class="t m0 x1a he y1ae ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _39"> </span>sh_ptr3<span class="_ _6"> </span>:<span class="_ _8"> </span>zero<span class="_ _6"> </span>references</div><div class="t m0 x16 he y1af ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr2<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span></span>sh_ptr1;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>allowed.<span class="_ _6"> </span>sh_ptr1,<span class="_ _8"> </span>sh_ptr2:<span class="_ _6"> </span>two<span class="_ _8"> </span>references</span></div><div class="t m0 x16 he y1b0 ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr2<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>move(sh_ptr1);<span class="_ _6"> </span><span class="ffd fc7">//<span class="_ _8"> </span>allowed<span class="_ _6"> </span>//<span class="_ _8"> </span>sh_ptr1:<span class="_ _6"> </span>zero<span class="_ _8"> </span>references</span></div><div class="t m0 x1 he y1b1 ff11 fs5 fc0 sc0 ls0 ws0">}<span class="_ _3a"> </span><span class="ffd fc7">//<span class="_ _6"> </span>sh_ptr2:<span class="_ _8"> </span>one<span class="_ _6"> </span>references</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">41/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2e" class="pf w0 h0" data-page-no="2e"><div class="pc pc2e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::shared_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Sha<span class="_ _3"></span>red<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _38"> </span>2/3</span></div><div class="t m0 x11 ha y21 ff6 fs6 fc0 sc0 ls0 ws0">std::shared_ptr<span class="_ _18"> </span><span class="ff4">metho<span class="_ _c"></span>ds</span></div><div class="t m0 xc ha y186 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">get<span class="fc0">()<span class="_ _18"> </span><span class="ff4">returns<span class="_ _e"> </span>the<span class="_ _e"> </span>underlying<span class="_ _e"> </span>pointer</span></span></span></div><div class="t m0 xc ha y1b2 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">operator*<span class="_ _16"> </span>operator-><span class="_ _14"> </span></span><span class="ff4">dereferences<span class="_ _b"> </span>p<span class="_ _c"></span>ointer<span class="_ _e"> </span>to<span class="_ _b"> </span>the<span class="_ _e"> </span>managed<span class="_ _e"> </span>object</span></div><div class="t m0 xc ha y1b3 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">use_count<span class="fc0">()<span class="_ _18"> </span><span class="ff4">returns<span class="_ _e"> </span>the<span class="_ _e"> </span>numb<span class="_ _c"></span>er<span class="_ _b"> </span>of<span class="_ _e"> </span>objects<span class="_ _e"> </span>referring<span class="_ _b"> </span>to<span class="_ _e"> </span>the<span class="_ _e"> </span>same<span class="_ _e"> </span>managed</span></span></span></div><div class="t m0 x6 ha y1b4 ff4 fs6 fc0 sc0 ls0 ws0">object</div><div class="t m0 xc ha y1b5 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">reset<span class="fc0">(ptr)<span class="_ _18"> </span><span class="ff4">replaces<span class="_ _e"> </span>the<span class="_ _e"> </span>managed<span class="_ _e"> </span>object<span class="_ _b"> </span>with<span class="_ _e"> </span></span>ptr</span></span></div><div class="t m0 x1 ha y1b6 ff4 fs6 fc0 sc0 ls0 ws0">Utilit<span class="_ _3"></span>y<span class="_ _e"> </span>metho<span class="_ _c"></span>d:<span class="_ _5"> </span><span class="ffe fc8">std::make_shared<span class="fc0">()<span class="_ _18"> </span></span></span>creates<span class="_ _e"> </span>a<span class="_ _e"> </span>sha<span class="_ _3"></span>red<span class="_ _e"> </span>pointer<span class="_ _e"> </span>that<span class="_ _e"> </span>manages<span class="_ _e"> </span>a<span class="_ _b"> </span>new</div><div class="t m0 x1 ha y1b7 ff4 fs6 fc0 sc0 ls0 ws0">object.<span class="_ _11"> </span>It<span class="_ _e"> </span>is<span class="_ _b"> </span>more<span class="_ _b"> </span>efficient<span class="_ _e"> </span>than<span class="_ _e"> </span>using<span class="_ _e"> </span>the<span class="_ _18"> </span><span class="ffe">std::shared_ptr<span class="_ _18"> </span></span>constructors<span class="_ _b"> </span>b<span class="_ _c"></span>ecause<span class="_ _e"> </span>it</div><div class="t m0 x1 ha y1b8 ff4 fs6 fc0 sc0 ls0 ws0">p<span class="_ _c"></span>erfo<span class="_ _3"></span>rms<span class="_ _e"> </span>a<span class="_ _b"> </span>single<span class="_ _e"> </span>memory<span class="_ _b"> </span>allo<span class="_ _c"></span>cation<span class="_ _e"> </span>instead<span class="_ _b"> </span>of<span class="_ _e"> </span>tw<span class="_ _3"></span>o</div><div class="t m0 xc hc y1b9 ffa fs7 fc3 sc0 ls0 ws0">Difference<span class="_ _11"> </span>in<span class="_ _8"> </span>make_shared<span class="_ _11"> </span>and<span class="_ _11"> </span>normal<span class="_ _8"> </span>shared_ptr<span class="_ _11"> </span>in<span class="_ _8"> </span>C++</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">42/58</div><a class="l" href="https://stackoverflow.com/questions/20895648/difference-in-make-shared-and-normal-shared-ptr-in-c"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:1.122000px;width:256.189000px;height:13.445000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf2f" class="pf w0 h0" data-page-no="2f"><div class="pc pc2f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAId0lEQVR42u3YoQ1CMRSG0Za8BtUwA0ExASFoEjZjCcZBMAQboF6eoqY4BBLDfeScCZq/5svNm90hAQBAGPfbdWEFAACiEakAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAALzl1poVAACIo5TikgoAQDgiFQCAcIYZvXWaJh8GAPCdWuuMXuuSCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASDUBAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRagIAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAMAP5daaFQAAiKOU4pIKAEA4IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAPgzjeW0FAPg/j+PFCMzUdn/KebXs4zOl3rtBAAAI4QXAOhoCPNSA6wAAAABJRU5ErkJggg=="/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::shared_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>Sha<span class="_ _3"></span>red<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _38"> </span>3/3</span></div><div class="t m0 x1 he y1ba ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y1bb ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 he y1bc ff6 fs5 fc4 sc0 ls0 ws0">struct<span class="_ _6"> </span><span class="fc8">A<span class="_ _8"> </span><span class="ff11 fc0">{</span></span></div><div class="t m0 x16 he y1bd ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc0">value;</span></div><div class="t m0 x1 he y1be ff11 fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 he y1bf ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y1c0 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>shared_ptr<span class="fc6"><</span>A<span class="fc6">><span class="_ _6"> </span></span>sh_ptr1(<span class="ff6 fc4">new<span class="_ _8"> </span></span>A());</div><div class="t m0 x16 he y1c1 ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _6"> </span><span class="ff11 fc0">sh_ptr2<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span></span>std<span class="fc6">::</span>make_shared<span class="fc6"><</span>A<span class="fc6">></span>();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>std::make_shared</span></span></div><div class="t m0 x16 he y1c2 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>sh_ptr1.use_count();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>1</span></div><div class="t m0 x16 he y1c3 ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr1<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span></span>sh_ptr2;<span class="_ _3b"> </span><span class="ffd fc7">//<span class="_ _6"> </span>copy</span></div><div class="t m0 x1 he y1c4 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _13"> </span>std::shared_ptr<A><span class="_ _6"> </span>sh_ptr2(sh_ptr1);<span class="_ _6"> </span>//<span class="_ _8"> </span>copy<span class="_ _6"> </span>(constructor)</div><div class="t m0 x16 he y1c5 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>sh_ptr1.use_count();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>2</span></div><div class="t m0 x16 he y1c6 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>sh_ptr2.use_count();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>2</span></div><div class="t m0 x16 he y1c7 ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _6"> </span><span class="ff11 fc0">raw_ptr<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span></span>sh_ptr1.get();<span class="_ _34"> </span><span class="ffd fc7">//<span class="_ _6"> </span>get</span></span></div><div class="t m0 x16 he y1c8 ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr1.reset(<span class="ff6 fc4">new<span class="_ _6"> </span></span>A());<span class="_ _36"> </span><span class="ffd fc7">//<span class="_ _6"> </span>reset</span></div><div class="t m0 x16 he y1c9 ff11 fs5 fc0 sc0 ls0 ws0">(<span class="fc6">*</span>sh_ptr1).value<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span>3</span>;<span class="_ _3c"> </span><span class="ffd fc7">//<span class="_ _6"> </span>dereferencing</span></div><div class="t m0 x16 he y1ca ff11 fs5 fc0 sc0 ls0 ws0">sh_ptr1<span class="fc6">-></span>value<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span>2</span>;<span class="_ _3d"> </span><span class="ffd fc7">//<span class="_ _6"> </span>dereferencing</span></div><div class="t m0 x1 he y1cb ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">43/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf30" class="pf w0 h0" data-page-no="30"><div class="pc pc30 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::weak_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>W<span class="_ _3"></span>eak<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _3e"> </span>1/3</span></div><div class="t m0 x1 ha y107 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _18"> </span><span class="ff6">std::weak_ptr<span class="_ _14"> </span></span>is<span class="_ _b"> </span>simply<span class="_ _e"> </span>a<span class="_ _18"> </span><span class="ffe">std::shared_ptr<span class="_ _14"> </span></span>that<span class="_ _b"> </span>is<span class="_ _e"> </span>allo<span class="_ _3"></span>wed<span class="_ _b"> </span>to<span class="_ _e"> </span>dangle<span class="_ _e"> </span>(p<span class="_ _c"></span>ointer</div><div class="t m0 x1 ha y108 ff4 fs6 fc0 sc0 ls0 ws0">not<span class="_ _e"> </span>deallocated)</div><div class="t m0 x1 hc y109 ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _2d"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 hc yd5 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>shared_ptr<span class="fc6"><<span class="ff6 fc5">int</span>><span class="_ _11"> </span></span>sh_ptr(<span class="ff6 fc4">new<span class="_ _8"> </span><span class="fc5">int</span></span>);</div><div class="t m0 x1 hc yd6 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>weak_ptr<span class="fc6"><<span class="ff6 fc5">int</span>><span class="_ _1d"> </span></span>w_ptr<span class="_ _11"> </span><span class="fc6">=<span class="_ _11"> </span></span>sh_ptr;</div><div class="t m0 x1 hc yd8 ffa fs7 fc0 sc0 ls0 ws0">sh_ptr<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">nullptr</span></span>;</div><div class="t m0 x1 hc yd9 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>w_ptr.expired();<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span><span class="ff10">'</span>true<span class="ff10">'</span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">44/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf31" class="pf w0 h0" data-page-no="31"><div class="pc pc31 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::weak_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>W<span class="_ _3"></span>eak<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _3e"> </span>2/3</span></div><div class="t m0 x1 ha y1cc ff4 fs6 fc0 sc0 ls0 ws0">It<span class="_ _e"> </span>must<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _e"> </span>converted<span class="_ _e"> </span>to<span class="_ _18"> </span><span class="ffe">std::shared_ptr<span class="_ _18"> </span></span>in<span class="_ _e"> </span>order<span class="_ _b"> </span>to<span class="_ _e"> </span>access<span class="_ _e"> </span>the<span class="_ _b"> </span>referenced<span class="_ _e"> </span>object</div><div class="t m0 x11 ha y1cd ff6 fs6 fc0 sc0 ls0 ws0">std::weak_ptr<span class="_ _18"> </span><span class="ff4">metho<span class="_ _c"></span>ds</span></div><div class="t m0 xc ha y1ce ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">use_count<span class="fc0">()<span class="_ _18"> </span><span class="ff4">returns<span class="_ _e"> </span>the<span class="_ _e"> </span>numb<span class="_ _c"></span>er<span class="_ _b"> </span>of<span class="_ _e"> </span>objects<span class="_ _e"> </span>referring<span class="_ _b"> </span>to<span class="_ _e"> </span>the<span class="_ _e"> </span>same<span class="_ _e"> </span>managed</span></span></span></div><div class="t m0 x6 ha y1cf ff4 fs6 fc0 sc0 ls0 ws0">object</div><div class="t m0 xc ha y1d0 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">reset<span class="fc0">(ptr)<span class="_ _18"> </span><span class="ff4">replaces<span class="_ _e"> </span>the<span class="_ _e"> </span>managed<span class="_ _e"> </span>object<span class="_ _b"> </span>with<span class="_ _14"> </span></span>ptr</span></span></div><div class="t m0 xc ha y1d1 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">expired<span class="fc0">()<span class="_ _18"> </span><span class="ff4">checks<span class="_ _e"> </span>whether<span class="_ _e"> </span>the<span class="_ _e"> </span>referenced<span class="_ _b"> </span>object<span class="_ _e"> </span>was<span class="_ _b"> </span>already<span class="_ _e"> </span>deleted<span class="_ _e"> </span>(</span>true<span class="ff4">,</span></span></span></div><div class="t m0 x6 ha y1d2 ffe fs6 fc0 sc0 ls0 ws0">false<span class="ff4">)</span></div><div class="t m0 xc ha y1d3 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe fc8">lock<span class="fc0">()<span class="_ _18"> </span><span class="ff4">creates<span class="_ _e"> </span>a<span class="_ _18"> </span></span>std::shared_ptr<span class="_ _14"> </span><span class="ff4">that<span class="_ _b"> </span>manages<span class="_ _e"> </span>the<span class="_ _e"> </span>referenced<span class="_ _e"> </span>object</span></span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">45/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf32" class="pf w0 h0" data-page-no="32"><div class="pc pc32 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWJnr3Dwnz7PBOFL8/Lnze6QAAAgjPvturACAADRiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAN5yrdUKAADEUUpxSQUAIByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAH+mm9Fbx3H0YQAA3+n7fkavdUkFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkmgAAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAB+U661WgEAgDhKKS6pAACEI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAwlW44r60AAEzncbwYgY9s96ecV8s2PFNqrRkEAIAQXn/hGgLA8KqtAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff6 fs2 fc1 sc0 ls0 ws0">std::weak_ptr<span class="_ _8"> </span><span class="ff1">-<span class="_ _8"> </span>W<span class="_ _3"></span>eak<span class="_ _8"> </span>P<span class="_ _3"></span>ointer<span class="_ _3e"> </span>3/3</span></div><div class="t m0 x1 hc y1d4 ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _2d"> </span><span class="fc7"><memory></span></div><div class="t m0 x1 hc y1d5 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">sh_ptr1<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>std<span class="fc6">::</span>make_shared<span class="fc6"><</span></span><span class="fc5">int<span class="ffa fc6">><span class="fc0">();</span></span></span></div><div class="t m0 x1 hc y1d6 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>sh_ptr1.use_count();<span class="_ _16"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _11"> </span>1</span></div><div class="t m0 x1 hc y1d7 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>weak_ptr<span class="fc6"><<span class="ff6 fc5">int</span>><span class="_ _11"> </span></span>w_ptr<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>sh_ptr1;</div><div class="t m0 x1 hc y1d8 ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>w_ptr.use_count();<span class="_ _26"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _11"> </span>1</span></div><div class="t m0 x1 hc y1d9 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">sh_ptr2<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>w_ptr.lock();</span></div><div class="t m0 x1 hc y1da ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>w_ptr.use_count();<span class="_ _26"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _11"> </span>2<span class="_ _8"> </span>(sh_ptr1<span class="_ _11"> </span>+<span class="_ _11"> </span>sh_ptr2)</span></div><div class="t m0 x1 hc y1db ffa fs7 fc0 sc0 ls0 ws0">sh_ptr1<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">nullptr</span></span>;</div><div class="t m0 x1 hc y1dc ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>w_ptr.expired();<span class="_ _3f"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>false</span></div><div class="t m0 x1 hc y1dd ffa fs7 fc0 sc0 ls0 ws0">sh_ptr2<span class="_ _11"> </span><span class="fc6">=<span class="_ _8"> </span><span class="ff6 fc4">nullptr</span></span>;</div><div class="t m0 x1 hc y1de ffa fs7 fc0 sc0 ls0 ws0">cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span></span>w_ptr.expired();<span class="_ _3f"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>true</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">46/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf33" class="pf w0 h0" data-page-no="33"><div class="pc pc33 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x8 h2 y20 ff1 fs0 fc0 sc0 ls0 ws0">Concurrency</div><a class="l" href="#pf33" data-dest-detail='[51,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:132.432000px;width:142.522000px;height:24.026000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf34" class="pf w0 h0" data-page-no="34"><div class="pc pc34 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIyElEQVR42u3cMUrGMBiA4aQ0OP14BnFy6SriLHgzL+FxHJxLR2/g9NPJBNp/EDxAUUza5zlB8n3LSwqNt/ePAQAAqvHx/taZAgAAtRGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAD8iDlnUwAAoB4pJS+pAABUR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAA7Ejf0FnnebYwAIBtTqdTQ6f1kgoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEg1AgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAwB+IOWdTAACgHiklL6kAAFRHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAADsSN/KQZdlmabJwgAAthmGQaT+vq7rmhsuAEA9xnFsKKV87gcAQKQCAIBIBQBApAIAgEgFAECkAgCASAUA4HD6HdwhpWSRAADfSik7uIWXVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAADwv/od3KGUYpEAAHviJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAgMNp5j+py7KEEMZxtDMAgA2GYWjotDHnbGcAANQjpeRzPwAA1RGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAB9KfX25MAQCox+fTqyEc3N3Dc4zXV+v5K4R1XQ0EAIAqXAApLzKD76P/CgAAAABJRU5ErkJggg=="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Overview</div><div class="t m0 x1 ha y21 ff4 fs6 fc9 sc0 ls0 ws0">C++11<span class="_ _e"> </span><span class="fc0">introduces<span class="_ _e"> </span>the<span class="_ _e"> </span><span class="ff6">Concurrency<span class="_ _e"> </span></span>lib<span class="_ _3"></span>ra<span class="_ _3"></span>ry<span class="_ _e"> </span>to<span class="_ _e"> </span>simplify<span class="_ _e"> </span>managing<span class="_ _b"> </span>OS<span class="_ _e"> </span>threads</span></div><div class="t m0 x1 he y1df ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y1e0 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread></span></div><div class="t m0 x1 he y1e1 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y1e2 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"first<span class="_ _8"> </span>thread"<span class="_ _6"> </span></span><<<span class="_ _8"> </span></span>std<span class="fc6">::</span>endl;</div><div class="t m0 x1 he y1e3 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y1e4 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">(){</span></span></div><div class="t m0 x16 he y1e5 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::<span class="ff6 fc4">thread<span class="_ _6"> </span></span></span>th(f);</div><div class="t m0 x16 he y1e6 ff11 fs5 fc0 sc0 ls0 ws0">th.join();<span class="_ _40"> </span><span class="ffd fc7">//<span class="_ _6"> </span>stop<span class="_ _8"> </span>the<span class="_ _6"> </span>main<span class="_ _8"> </span>thread<span class="_ _6"> </span>until<span class="_ _6"> </span>"th"<span class="_ _8"> </span>complete</span></div><div class="t m0 x1 he y1e7 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 ha y1e8 ff4 fs6 fc0 sc0 ls0 ws0">Ho<span class="_ _3"></span>w<span class="_ _e"> </span>to<span class="_ _e"> </span>compile:</div><div class="t m0 x21 hc y1e9 ffa fs7 fce sc0 ls0 ws0">$<span class="fc0">g++<span class="_ _11"> </span>-std=c++<span class="fcf">11<span class="_ _8"> </span></span>main.cpp<span class="_ _11"> </span>-pthread</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">47/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf35" class="pf w0 h0" data-page-no="35"><div class="pc pc35 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Example</div><div class="t m0 x1 he y18e ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y18f ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread></span></div><div class="t m0 x1 he y190 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><vector></span></div><div class="t m0 x1 he y191 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>int<span class="_ _8"> </span><span class="ff11 fc0">id)<span class="_ _8"> </span>{</span></div><div class="t m0 x16 he y192 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"thread<span class="_ _8"> </span>"<span class="_ _6"> </span></span><<<span class="_ _8"> </span></span>id<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>std<span class="fc6">::</span>endl;</div><div class="t m0 x1 he y193 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y194 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y195 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>><span class="_ _6"> </span></span>thread_vect;<span class="_ _8"> </span><span class="ffd fc7">//<span class="_ _6"> </span>thread<span class="_ _8"> </span>vector</span></div><div class="t m0 x16 he y196 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x18 he y1ea ff11 fs5 fc0 sc0 ls0 ws0">thread_vect.push_back(<span class="_ _6"> </span>std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(<span class="fc6">&</span>f,<span class="_ _8"> </span>i)<span class="_ _6"> </span>);</div><div class="t m0 x16 he y1eb ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span>auto<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">th<span class="_ _8"> </span></span>:<span class="_ _6"> </span><span class="fc0">thread_vect)</span></span></div><div class="t m0 x18 he y198 ff11 fs5 fc0 sc0 ls0 ws0">th.join();</div><div class="t m0 x16 he y19a ff11 fs5 fc0 sc0 ls0 ws0">thread_vect.clear();</div><div class="t m0 x16 he y1ec ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)<span class="_ _8"> </span>{<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>thread<span class="_ _8"> </span>+<span class="_ _6"> </span>lambda<span class="_ _8"> </span>expression</span></span></span></div><div class="t m0 x18 he y19b ff11 fs5 fc0 sc0 ls0 ws0">thread_vect.push_back(</div><div class="t m0 x22 he y19c ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(<span class="_ _6"> </span>[](){<span class="_ _8"> </span>std<span class="fc6">::</span>cout<span class="_ _8"> </span><span class="fc6"><<<span class="_ _6"> </span><span class="fca">"thread<span class="ff6 fcd">\n</span>"</span></span>;<span class="_ _8"> </span>}<span class="_ _6"> </span>);</div><div class="t m0 x16 he y19d ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y1ed ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">48/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf36" class="pf w0 h0" data-page-no="36"><div class="pc pc36 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Thread<span class="_ _8"> </span>Metho<span class="_ _c"></span>ds<span class="_ _41"> </span>1/2</div><div class="t m0 x1 ha y21 ff1 fs6 fc0 sc0 ls0 ws0">Lib<span class="_ _3"></span>rary<span class="_ _e"> </span>metho<span class="_ _c"></span>ds:</div><div class="t m0 x9 h5 y1ee ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">std::this_thread::<span class="ff6">get_id</span>()<span class="_ _2d"> </span><span class="ff4">returns<span class="_ _b"> </span>the<span class="_ _b"> </span>thread<span class="_ _b"> </span>id</span></span></div><div class="t m0 x9 h5 y1ef ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">std::thread::<span class="ff6">sleep_for</span>(<span class="_"> </span>sleep_duration<span class="_"> </span>)</span></div><div class="t m0 x6 h5 y1f0 ff4 fs3 fc0 sc0 ls0 ws0">Blo<span class="_ _c"></span>cks<span class="_ _10"> </span>the<span class="_ _b"> </span>execution<span class="_ _b"> </span>of<span class="_ _b"> </span>the<span class="_ _b"> </span>current<span class="_ _b"> </span>thread<span class="_ _b"> </span>for<span class="_ _b"> </span>at<span class="_ _b"> </span>least<span class="_ _b"> </span>the<span class="_ _b"> </span>specified<span class="_ _b"> </span><span class="ffe">sleep_duration</span></div><div class="t m0 x9 h5 y1f1 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">std::thread::<span class="ff6">hardware_concurrency</span>()<span class="_ _2d"> </span><span class="ff4">returns<span class="_ _b"> </span>the<span class="_ _b"> </span>numb<span class="_ _c"></span>er<span class="_ _b"> </span>of<span class="_ _b"> </span>concurrent<span class="_ _b"> </span>threads</span></span></div><div class="t m0 x6 h5 y1f2 ff4 fs3 fc0 sc0 ls0 ws0">supp<span class="_ _c"></span>o<span class="_ _3"></span>rted<span class="_ _b"> </span>b<span class="_ _3"></span>y<span class="_ _b"> </span>the<span class="_ _b"> </span>implementation</div><div class="t m0 x1 ha y1f3 ff1 fs6 fc0 sc0 ls0 ws0">Thread<span class="_ _6"> </span>object<span class="_ _e"> </span>metho<span class="_ _c"></span>ds:</div><div class="t m0 x9 h5 y1f4 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">get_id<span class="ffe">()<span class="_ _2d"> </span><span class="ff4">returns<span class="_ _b"> </span>the<span class="_ _b"> </span>thread<span class="_ _b"> </span>id</span></span></span></div><div class="t m0 x9 h5 y1f5 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">join<span class="ffe">()<span class="_ _2d"> </span><span class="ff4">waits<span class="_ _10"> </span>for<span class="_ _b"> </span>a<span class="_ _b"> </span>thread<span class="_ _b"> </span>to<span class="_ _b"> </span>finish<span class="_ _b"> </span>its<span class="_ _b"> </span>execution</span></span></span></div><div class="t m0 x9 h5 y1f6 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">detach<span class="ffe">()<span class="_ _2d"> </span><span class="ff4">p<span class="_ _c"></span>ermits<span class="_ _b"> </span>the<span class="_ _b"> </span>thread<span class="_ _b"> </span>to<span class="_ _b"> </span>execute<span class="_ _b"> </span>independently<span class="_ _b"> </span>of<span class="_ _b"> </span>the<span class="_ _b"> </span>thread<span class="_ _b"> </span>handle</span></span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">49/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf37" class="pf w0 h0" data-page-no="37"><div class="pc pc37 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIeElEQVR42u3YsQkCMRiG4UQuWB3OIFZOIGItuJlLOI6FQ7iB1XGVaWJnJYIW8p88zwThS/Py59VmlwAAIIzr5TyzAgAA0YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACecq3VCgAAxFFKcUkFACAckQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAf6ib01nEcfRgAwHf6vp/Qa11SAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAA3sq1VisAABBHKcUlFQCAcEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAPyZbjgurQAA8NJtfzLC7623h5wX8zbcU2qtGQQAgBAegkcaAkOyx0YAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Thread<span class="_ _8"> </span>Metho<span class="_ _c"></span>ds<span class="_ _41"> </span>2/2</div><div class="t m0 x1 he y18e ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><chrono><span class="_ _1d"> </span>//<span class="_ _6"> </span>the<span class="_ _8"> </span>following<span class="_ _6"> </span>program<span class="_ _8"> </span>could</span></div><div class="t m0 x1 he y18f ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream><span class="_ _1b"> </span>//<span class="_ _6"> </span>produce<span class="_ _8"> </span>the<span class="_ _6"> </span>output<span class="_ _8"> </span>(not<span class="_ _6"> </span>deterministic):</span></div><div class="t m0 x1 he y190 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread><span class="_ _1d"> </span>//<span class="_ _39"> </span>"child<span class="_ _6"> </span>thread<span class="_ _8"> </span>exit"<span class="_ _6"> </span>(t_child<span class="_ _8"> </span><<span class="_ _6"> </span>t_main)</span></div><div class="t m0 x23 he y191 ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _35"> </span>"main<span class="_ _6"> </span>thread<span class="_ _6"> </span>exit"</div><div class="t m0 x1 he y192 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y193 ff6 fs5 fc4 sc0 ls0 ws0">using<span class="_ _6"> </span>namespace<span class="_ _8"> </span><span class="fc8">std<span class="ff11 fc6">::</span>chrono_literals<span class="ff11 fc0">;</span></span></div><div class="t m0 x16 he y194 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>std<span class="fc6">::</span>this_thread<span class="fc6">::</span>get_id();</div><div class="t m0 x16 he y195 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>std<span class="fc6">::<span class="ff6 fc4">thread</span>::</span>hardware_concurrency();<span class="_ _6"> </span><span class="ffd fc7">//<span class="_ _8"> </span>e.g.<span class="_ _6"> </span>print<span class="_ _8"> </span>6</span></div><div class="t m0 x16 he y1ea ff6 fs5 fc4 sc0 ls0 ws0">auto<span class="_ _6"> </span><span class="ff11 fc0">lambda<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span></span>[]()<span class="_ _6"> </span>{</span></div><div class="t m0 x18 he y197 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(<span class="fc6">1</span>s);<span class="_ _6"> </span><span class="ffd fc7">//<span class="_ _8"> </span>t_child</span></div><div class="t m0 x18 he y1eb ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"child<span class="_ _8"> </span>thread<span class="_ _6"> </span>exit<span class="ff6 fcd">\n</span>"</span></span>;</div><div class="t m0 x16 he y198 ff11 fs5 fc0 sc0 ls0 ws0">};</div><div class="t m0 x16 he y199 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::<span class="ff6 fc4">thread<span class="_ _6"> </span></span><span class="fc8">child</span></span>(lambda);</div><div class="t m0 x16 he y19a ff11 fs5 fc0 sc0 ls0 ws0">child.detach();<span class="_ _6"> </span><span class="ffd fc7">//<span class="_ _8"> </span>without<span class="_ _6"> </span>detach(),<span class="_ _8"> </span>child<span class="_ _6"> </span>must<span class="_ _8"> </span>join()<span class="_ _6"> </span>the</span></div><div class="t m0 x23 he y1ec ffd fs5 fc7 sc0 ls0 ws0">//<span class="_ _6"> </span>main<span class="_ _8"> </span>thread<span class="_ _6"> </span>(run-time<span class="_ _8"> </span>error<span class="_ _6"> </span>otherwise)</div><div class="t m0 x16 he y19b ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(<span class="fc6">2</span>s);<span class="_ _35"> </span><span class="ffd fc7">//<span class="_ _6"> </span>t_main</span></div><div class="t m0 x16 he y19c ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"main<span class="_ _8"> </span>thread<span class="_ _6"> </span>exit<span class="ff6 fcd">\n</span>"</span></span>;</div><div class="t m0 x1 he y19d ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">50/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf38" class="pf w0 h0" data-page-no="38"><div class="pc pc38 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIoklEQVR42u3YsU0DQRCG0Vt0I6KVa0BErgAhYiQ6owmXQ0ARdEBkbeRJjgyRYh94TnqvgtW/yadp9w9PEwAAlPHx/nZjBQAAqhGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAB8a5lpBQAA6ogIl1QAAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAD/aDYBAPDTGMMIZ+i9G2FFLqkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEA4LpaZloBAIA6IsIlFQCAckQqAAAiFQAARCoAACIVAAAuNW/orWMMH/YXeu9GAABKcUkFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAANfVMtMKAADUEREuqQAAlCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEA4JfmDb11jOHDAADO03vf0GtdUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkmAABApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACsqGWmFQAAqCMiXFIBAChHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAIDa5uPrnRUAAFbx+XwwwuX2jy+t7W6X42malmUxCAAAJXwBqGMl/pDGDAYAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">P<span class="_ _3"></span>a<span class="_ _3"></span>rameters<span class="_ _8"> </span>Passing</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">P<span class="_ _3"></span>arameters<span class="_ _b"> </span>passing<span class="_ _e"> </span><span class="ff8">by-value<span class="_ _6"> </span></span>o<span class="_ _3"></span>r<span class="_ _e"> </span><span class="ff8">b<span class="_ _3"></span>y-p<span class="_ _c"></span>ointer<span class="_ _11"> </span><span class="ff4">to<span class="_ _e"> </span>a<span class="_ _b"> </span>thread<span class="_ _e"> </span>function<span class="_ _e"> </span>w<span class="_ _3"></span>orks<span class="_ _b"> </span>in<span class="_ _e"> </span>the<span class="_ _e"> </span>same<span class="_ _e"> </span>w<span class="_ _3"></span>a<span class="_ _3"></span>y</span></span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">of<span class="_ _e"> </span>a<span class="_ _b"> </span>standard<span class="_ _b"> </span>function.<span class="_ _11"> </span><span class="ff8">Pass-b<span class="_ _3"></span>y-reference<span class="_ _6"> </span><span class="ff4">requires<span class="_ _e"> </span>a<span class="_ _e"> </span>sp<span class="_ _c"></span>ecial<span class="_ _b"> </span>wrapp<span class="_ _c"></span>er<span class="_ _e"> </span>(<span class="_ _10"> </span><span class="ffe">std::ref<span class="_ _10"> </span></span>,</span></span></div><div class="t m0 x11 ha yc4 ffe fs6 fc0 sc0 ls0 ws0">std::cref<span class="_ _10"> </span><span class="ff4">)<span class="_ _e"> </span>to<span class="_ _e"> </span>avoid<span class="_ _b"> </span>wrong<span class="_ _e"> </span>b<span class="_ _c"></span>ehavio<span class="_ _3"></span>rs</span></div><div class="t m0 x1 he y1f7 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread></span></div><div class="t m0 x1 he y1f8 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>int<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">a,<span class="_ _8"> </span></span></span><span class="fc4">const<span class="_ _6"> </span></span>int<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">b)<span class="_ _6"> </span>{</span></span></div><div class="t m0 x16 he y1f9 ff11 fs5 fc0 sc0 ls0 ws0">a<span class="_ _6"> </span><span class="fc6">=<span class="_ _8"> </span>7<span class="_ _8"> </span>*<span class="_ _6"> </span></span>b;</div><div class="t m0 x1 he y1fa ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y1fb ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y1fc ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc0">a<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span>1</span>,<span class="_ _6"> </span>b<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>2</span>;</span></div><div class="t m0 x16 he y1fd ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::<span class="ff6 fc4">thread<span class="_ _6"> </span></span></span>th1(f,<span class="_ _8"> </span>a,<span class="_ _8"> </span>b);<span class="_ _42"> </span><span class="ffd fc7">//<span class="_ _6"> </span><span class="fce">wrong!!!</span></span></div><div class="t m0 x16 he y1fe ff11 fs5 fc0 sc0 ls0 ws0">th1.join();</div><div class="t m0 x16 he y1ff ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>a<span class="_ _8"> </span><span class="fc6"><<<span class="_ _6"> </span></span>endl;<span class="_ _43"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>2!!</span></div><div class="t m0 x16 he y200 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::<span class="ff6 fc4">thread<span class="_ _6"> </span></span></span>th2(f,<span class="_ _8"> </span>std<span class="fc6">::</span>ref(a),<span class="_ _8"> </span>std<span class="fc6">::</span>cref(b));<span class="_ _6"> </span><span class="ffd fc7">//<span class="_ _6"> </span><span class="fce">correct</span></span></div><div class="t m0 x16 he y201 ff11 fs5 fc0 sc0 ls0 ws0">th2.join();</div><div class="t m0 x16 he y202 ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>a<span class="_ _8"> </span><span class="fc6"><<<span class="_ _6"> </span></span>endl;<span class="_ _43"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>49!!</span></div><div class="t m0 x1 he y203 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">51/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf39" class="pf w0 h0" data-page-no="39"><div class="pc pc39 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIcElEQVR42u3YsQkCMRiG4UQMVsEBrrRyAhFrwbXcw3GucAg3uEpSmSZ2VlaCkpPnmeDnS/OSuNkdAgAAdON2HRdWAACgNyIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICXWGu1AgAA/Ugp+UkFAKA7IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAADwTcsZ3VpK8WAAAJ/JOc/oWj+pAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpJgAAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAMCfi9N5sAIAwO9Nx4sR3truTzGuV+3+CKG1ZhAAALrwBL35FvFpgH0ZAAAAAElFTkSuQmCC"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Mutex<span class="_ _8"> </span><span class="fs3">(The<span class="_ _e"> </span>Problem)<span class="_ _44"> </span></span>1/4</div><div class="t m0 x1 ha y204 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span>follo<span class="_ _3"></span>wing<span class="_ _e"> </span>co<span class="_ _c"></span>de<span class="_ _b"> </span>produces<span class="_ _e"> </span>(in<span class="_ _e"> </span>general)<span class="_ _b"> </span>a<span class="_ _e"> </span>value<span class="_ _e"> </span><<span class="_ _e"> </span>1000:</div><div class="t m0 x1 he y205 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><chrono></span></div><div class="t m0 x1 he y206 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><iostream></span></div><div class="t m0 x1 he y207 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread></span></div><div class="t m0 x1 he y208 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><vector></span></div><div class="t m0 x1 he y209 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>int<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">value)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y20a ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x18 he y20b ff11 fs5 fc0 sc0 ls0 ws0">value<span class="fc6">++</span>;</div><div class="t m0 x18 he y20c ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(std<span class="fc6">::</span>chrono<span class="fc6">::</span>milliseconds(<span class="fc6">10</span>));</div><div class="t m0 x16 he y20d ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y20e ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y20f ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y210 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc0">value<span class="_ _8"> </span><span class="fc6">=<span class="_ _8"> </span>0</span>;</span></div><div class="t m0 x16 he y211 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>><span class="_ _6"> </span></span>th_vect;</div><div class="t m0 x16 he y212 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>100</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x18 he y213 ff11 fs5 fc0 sc0 ls0 ws0">th_vect.push_back(<span class="_ _6"> </span>std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(f,<span class="_ _8"> </span>std<span class="fc6">::</span>ref(value))<span class="_ _6"> </span>);</div><div class="t m0 x16 he y214 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span>auto<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">it<span class="_ _8"> </span></span>:<span class="_ _6"> </span><span class="fc0">th_vect)</span></span></div><div class="t m0 x18 he y215 ff11 fs5 fc0 sc0 ls0 ws0">it.join();</div><div class="t m0 x16 he y216 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>value;</div><div class="t m0 x1 he y217 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">52/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3a" class="pf w0 h0" data-page-no="3a"><div class="pc pc3a w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Mutex<span class="_ _45"> </span>2/4</div><div class="t m0 x1 ha y21 ff4 fs6 fc9 sc0 ls0 ws0">C++11<span class="_ _e"> </span><span class="fc0">p<span class="_ _3"></span>rovides<span class="_ _e"> </span>the<span class="_ _e"> </span><span class="ff6">mutex<span class="_ _b"> </span></span>class<span class="_ _e"> </span>as<span class="_ _e"> </span>synchronization<span class="_ _e"> </span>p<span class="_ _3"></span>rimitive<span class="_ _e"> </span>to<span class="_ _b"> </span>protect<span class="_ _b"> </span>shared<span class="_ _e"> </span>data</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">from<span class="_ _e"> </span>being<span class="_ _e"> </span>simultaneously<span class="_ _e"> </span>accessed<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span>multiple<span class="_ _e"> </span>threads</div><div class="t m0 x1 ha y218 ff6 fs6 fc0 sc0 ls0 ws0">mutex<span class="_ _e"> </span><span class="ff4">methods:</span></div><div class="t m0 xc ha y219 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">lock<span class="ffe">()<span class="_ _18"> </span><span class="ff4">lo<span class="_ _c"></span>cks<span class="_ _e"> </span>the<span class="_ _b"> </span><span class="ff8">mutex</span>,<span class="_ _e"> </span>blo<span class="_ _c"></span>cks<span class="_ _e"> </span>if<span class="_ _b"> </span>the<span class="_ _e"> </span><span class="ff8">mutex<span class="_ _11"> </span></span>is<span class="_ _e"> </span>not<span class="_ _b"> </span>available</span></span></span></div><div class="t m0 xc ha y21a ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">try_lock<span class="ffe">()<span class="_ _18"> </span><span class="ff4">tries<span class="_ _e"> </span>to<span class="_ _e"> </span>lo<span class="_ _c"></span>ck<span class="_ _b"> </span>the<span class="_ _e"> </span><span class="ff8">mutex</span>,<span class="_ _e"> </span>returns<span class="_ _b"> </span>if<span class="_ _e"> </span>the<span class="_ _e"> </span><span class="ff8">mutex<span class="_ _11"> </span></span>is<span class="_ _b"> </span>not<span class="_ _e"> </span>available</span></span></span></div><div class="t m0 xc ha y21b ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">unlock<span class="ffe">()<span class="_ _18"> </span><span class="ff4">unlo<span class="_ _c"></span>cks<span class="_ _e"> </span>the<span class="_ _b"> </span><span class="ff8">mutex</span></span></span></span></div><div class="t m0 x1 hb y21c ffb fs7 fc0 sc0 ls0 ws0">Mo<span class="_ _3"></span>re<span class="_ _b"> </span>advanced<span class="_ _10"> </span>mutex<span class="_ _b"> </span>can<span class="_ _10"> </span>b<span class="_ _c"></span>e<span class="_ _10"> </span>found<span class="_ _10"> </span>here:<span class="_ _6"> </span><span class="ffa">en.cppreference.com/w/cpp/thread</span></div><div class="t m0 x1 ha y21d ff4 fs6 fc0 sc0 ls0 ws0">C++<span class="_ _e"> </span>includes<span class="_ _b"> </span>three<span class="_ _e"> </span>mutex<span class="_ _e"> </span>wrapp<span class="_ _c"></span>ers<span class="_ _b"> </span>to<span class="_ _e"> </span>provide<span class="_ _b"> </span>safe<span class="_ _e"> </span>cop<span class="_ _3"></span>yable/movable<span class="_ _b"> </span>objects:</div><div class="t m0 xc ha y21e ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">lock_guard<span class="_ _18"> </span><span class="ff4">(<span class="fc9">C++11</span>)<span class="_ _e"> </span>implements<span class="_ _e"> </span>a<span class="_ _e"> </span>strictly<span class="_ _b"> </span>scop<span class="_ _c"></span>e-based<span class="_ _e"> </span>mutex<span class="_ _b"> </span>ownership</span></span></div><div class="t m0 x6 ha y21f ff4 fs6 fc0 sc0 ls0 ws0">wrapp<span class="_ _c"></span>er</div><div class="t m0 xc ha y220 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">unique_lock<span class="_ _18"> </span><span class="ff4">(<span class="fc9">C++11</span>)<span class="_ _e"> </span>implements<span class="_ _e"> </span>movable<span class="_ _e"> </span>mutex<span class="_ _b"> </span>ownership<span class="_ _b"> </span>wrapp<span class="_ _c"></span>er</span></span></div><div class="t m0 xc ha y221 ff7 fs6 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">shared_lock<span class="_ _18"> </span><span class="ff4">(<span class="fc9">C++14</span>)<span class="_ _e"> </span>implements<span class="_ _e"> </span>movable<span class="_ _e"> </span>sha<span class="_ _3"></span>red<span class="_ _e"> </span>mutex<span class="_ _b"> </span>ownership<span class="_ _b"> </span>wrapp<span class="_ _c"></span>er</span></span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">53/58</div><a class="l" href="en.cppreference.com/w/cpp/thread"><div class="d m1" style="border-style:none;position:absolute;left:191.606000px;bottom:98.980000px;width:152.628000px;height:10.211000px;background-color:rgba(255,255,255,0.000001);"></div></a></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3b" class="pf w0 h0" data-page-no="3b"><div class="pc pc3b w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Mutex<span class="_ _8"> </span>-<span class="_ _8"> </span>Example<span class="_ _8"> </span>1<span class="_ _46"> </span>3/4</div><div class="t m0 x1 he y18e ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><mutex></span></div><div class="t m0 x1 he y18f ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread><span class="_ _1b"> </span>//<span class="_ _6"> </span>+<span class="_ _8"> </span>iostream,<span class="_ _6"> </span>vector,<span class="_ _8"> </span>chrono</span></div><div class="t m0 x1 he y190 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>int<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">value,<span class="_ _8"> </span>std</span>::<span class="fc0">mutex</span>&<span class="_ _6"> </span><span class="fc0">m)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y191 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x18 he y192 ff11 fs5 fc0 sc0 ls0 ws0">m.lock();</div><div class="t m0 x18 he y193 ff11 fs5 fc0 sc0 ls0 ws0">value<span class="fc6">++</span>;<span class="_ _39"> </span><span class="ffd fc7">//<span class="_ _8"> </span>other<span class="_ _6"> </span>threads<span class="_ _8"> </span>must<span class="_ _6"> </span>wait</span></div><div class="t m0 x18 he y194 ff11 fs5 fc0 sc0 ls0 ws0">m.unlock();</div><div class="t m0 x18 he y195 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(std<span class="fc6">::</span>chrono<span class="fc6">::</span>milliseconds(<span class="fc6">10</span>));</div><div class="t m0 x16 he y196 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y1ea ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y197 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y1eb ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>mutex<span class="_ _31"> </span>m;</div><div class="t m0 x16 he y198 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _42"> </span><span class="ff11 fc0">value<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;</span></div><div class="t m0 x16 he y199 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>><span class="_ _6"> </span></span>th_vect;</div><div class="t m0 x16 he y19a ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>100</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x18 he y1ec ff11 fs5 fc0 sc0 ls0 ws0">th_vect.push_back(<span class="_ _6"> </span>std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(f,<span class="_ _8"> </span>std<span class="fc6">::</span>ref(value),<span class="_ _6"> </span>std<span class="fc6">::</span>ref(m))<span class="_ _8"> </span>);</div><div class="t m0 x16 he y19b ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span>auto<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">it<span class="_ _8"> </span></span>:<span class="_ _6"> </span><span class="fc0">th_vect)</span></span></div><div class="t m0 x18 he y19c ff11 fs5 fc0 sc0 ls0 ws0">it.join();</div><div class="t m0 x16 he y19d ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>value;</div><div class="t m0 x1 he y1ed ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">54/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3c" class="pf w0 h0" data-page-no="3c"><div class="pc pc3c w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIbklEQVR42u3YoQ1CMRSG0ZbQoF4YAIliAkLQJG8t9mAcBEOwwVOkipriQIO6L5wzwc1f86V5uz8mAAAI4367LqwAAEA0IhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAgLfcWrMCAABxlFL8pAIAEI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAgC8tZ3RrrdWDAQD8ZhiGGV3rJxUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAItUEAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAAB95Om+sAADw56bTJc4xu8OY83rVH8+Ueu9eBwCAEF5nCxbx7hZHIQAAAABJRU5ErkJggg=="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">Mutex<span class="_ _8"> </span>-<span class="_ _8"> </span>Example<span class="_ _8"> </span>2<span class="_ _46"> </span>4/4</div><div class="t m0 x1 he y18e ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><mutex></span></div><div class="t m0 x1 he y18f ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><thread><span class="_ _1b"> </span>//<span class="_ _6"> </span>+<span class="_ _8"> </span>iostream,<span class="_ _6"> </span>vector,<span class="_ _8"> </span>chrono</span></div><div class="t m0 x1 he y190 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(</span></span>int<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">value,<span class="_ _8"> </span>std</span>::<span class="fc0">mutex</span>&<span class="_ _6"> </span><span class="fc0">m)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y191 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x18 he y192 ff11 fs5 fc0 sc0 ls0 ws0">{</div><div class="t m0 x22 he y193 ff6 fs5 fc4 sc0 ls0 ws0">const<span class="_ _6"> </span><span class="ff11 fc0">std<span class="fc6">::</span>lock_guard<span class="fc6"><</span>std<span class="fc6">::</span>mutex<span class="fc6">><span class="_ _8"> </span></span>lock(m);</span></div><div class="t m0 x22 he y194 ff11 fs5 fc0 sc0 ls0 ws0">value<span class="fc6">++</span>;<span class="_ _39"> </span><span class="ffd fc7">//<span class="_ _8"> </span>other<span class="_ _6"> </span>threads<span class="_ _8"> </span>must<span class="_ _6"> </span>wait</span></div><div class="t m0 x18 he y195 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x18 he y196 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(std<span class="fc6">::</span>chrono<span class="fc6">::</span>milliseconds(<span class="fc6">10</span>));</div><div class="t m0 x16 he y1ea ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y197 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y1eb ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y198 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>mutex<span class="_ _31"> </span>m;</div><div class="t m0 x16 he y199 ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _42"> </span><span class="ff11 fc0">value<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;</span></div><div class="t m0 x16 he y19a ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>><span class="_ _6"> </span></span>th_vect;</div><div class="t m0 x16 he y1ec ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>100</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x18 he y19b ff11 fs5 fc0 sc0 ls0 ws0">th_vect.push_back(<span class="_ _6"> </span>std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(f,<span class="_ _8"> </span>std<span class="fc6">::</span>ref(value),<span class="_ _6"> </span>std<span class="fc6">::</span>ref(m))<span class="_ _8"> </span>);</div><div class="t m0 x16 he y19c ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span>auto<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">it<span class="_ _8"> </span></span>:<span class="_ _6"> </span><span class="fc0">th_vect)</span></span></div><div class="t m0 x18 he y19d ff11 fs5 fc0 sc0 ls0 ws0">it.join();</div><div class="t m0 x16 he y1ed ff11 fs5 fc0 sc0 ls0 ws0">cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>value;</div><div class="t m0 x1 he y222 ff11 fs5 fc0 sc0 ls0 ws0"><span class="fcc sc0">}</span></div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">55/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3d" class="pf w0 h0" data-page-no="3d"><div class="pc pc3d w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIkElEQVR42u3YsWkDQRCG0Vtzg6LFNRhHrkAYxQZ35iZcjgIX4Q4ciY08ySkTSmUkPIfeK+BY/ks+pj1vdxMAAJTx/bV/sAIAANWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAATlpmWgEAgDoiwiUVAIByRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAO7dvKK3jjH8sLJ670YAAK7FJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAA/K+WmVYAAKCOiHBJBQCgHJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAcGZe0VvHGH4YAMDf9N5X9FqXVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARKoJAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQCgppaZVgAAoI6IcEkFAKAckQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAAFc2Hz6erAAAwEV+3j5v9/GX1/fWHjfL4XealmWxNgAAJRwB5UEgAN3Hq0UAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">A<span class="_ _3"></span>tomic</div><div class="t m0 x11 ha y21 ff6 fs6 fc0 sc0 ls0 ws0">std::atomic<span class="_ _18"> </span><span class="ff4">(<span class="fc9">C++11</span>)<span class="_ _e"> </span>class<span class="_ _e"> </span>template<span class="_ _e"> </span>defines<span class="_ _b"> </span>an<span class="_ _e"> </span>atomic<span class="_ _e"> </span>t<span class="_ _3"></span>yp<span class="_ _c"></span>e<span class="_ _e"> </span>that<span class="_ _b"> </span>are<span class="_ _b"> </span>implemented</span></div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">with<span class="_ _e"> </span>lock-free<span class="_ _e"> </span>op<span class="_ _c"></span>erations<span class="_ _e"> </span>(much<span class="_ _b"> </span>faster<span class="_ _e"> </span>than<span class="_ _e"> </span>lo<span class="_ _c"></span>cks)</div><div class="t m0 x1 he y223 ffd fs5 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _1b"> </span><span class="fc7"><atomic><span class="_ _1b"> </span>//<span class="_ _6"> </span>chrono,<span class="_ _8"> </span>iostream,<span class="_ _6"> </span>thread,<span class="_ _8"> </span>vector</span></div><div class="t m0 x1 he y224 ff6 fs5 fc5 sc0 ls0 ws0">void<span class="_ _6"> </span><span class="ff11 fc8">f<span class="fc0">(std<span class="fc6">::</span>atomic<span class="fc6"><</span></span></span>int<span class="ff11 fc6">>&<span class="_ _8"> </span><span class="fc0">value)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y225 ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>10</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)<span class="_ _8"> </span>{</span></span></div><div class="t m0 x18 he y226 ff11 fs5 fc0 sc0 ls0 ws0">value<span class="fc6">++</span>;</div><div class="t m0 x18 he y227 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>this_thread<span class="fc6">::</span>sleep_for(std<span class="fc6">::</span>chrono<span class="fc6">::</span>milliseconds(<span class="fc6">10</span>));</div><div class="t m0 x16 he y228 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y229 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 he y22a ff6 fs5 fc5 sc0 ls0 ws0">int<span class="_ _6"> </span><span class="ff11 fc8">main<span class="fc0">()<span class="_ _8"> </span>{</span></span></div><div class="t m0 x16 he y22b ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>atomic<span class="fc6"><<span class="ff6 fc5">int</span>><span class="_ _6"> </span></span>value(<span class="fc6">0</span>);</div><div class="t m0 x16 he y22c ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>><span class="_ _6"> </span></span>th_vect;</div><div class="t m0 x16 he y22d ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span><span class="fc5">int<span class="_ _8"> </span><span class="ff11 fc0">i<span class="_ _8"> </span><span class="fc6">=<span class="_ _6"> </span>0</span>;<span class="_ _8"> </span>i<span class="_ _6"> </span><span class="fc6"><<span class="_ _8"> </span>100</span>;<span class="_ _6"> </span>i<span class="fc6">++</span>)</span></span></div><div class="t m0 x18 he y22e ff11 fs5 fc0 sc0 ls0 ws0">th_vect.push_back(<span class="_ _6"> </span>std<span class="fc6">::<span class="ff6 fc4">thread</span></span>(f,<span class="_ _8"> </span>std<span class="fc6">::</span>ref(value))<span class="_ _6"> </span>);</div><div class="t m0 x16 he y22f ff6 fs5 fc4 sc0 ls0 ws0">for<span class="_ _6"> </span><span class="ff11 fc0">(</span>auto<span class="ff11 fc6">&<span class="_ _8"> </span><span class="fc0">it<span class="_ _8"> </span></span>:<span class="_ _6"> </span><span class="fc0">th_vect)</span></span></div><div class="t m0 x18 he y230 ff11 fs5 fc0 sc0 ls0 ws0">it.join();</div><div class="t m0 x16 he y231 ff11 fs5 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _6"> </span><span class="fc6"><<<span class="_ _8"> </span></span>value;<span class="_ _35"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print<span class="_ _8"> </span>1000</span></div><div class="t m0 x1 he y232 ff11 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">56/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3e" class="pf w0 h0" data-page-no="3e"><div class="pc pc3e w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>ask-based<span class="_ _8"> </span>pa<span class="_ _3"></span>rallelism<span class="_ _47"> </span>1/2</div><div class="t m0 x1 ha y21 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span><span class="ff6">future<span class="_ _b"> </span></span>libra<span class="_ _3"></span>ry<span class="_ _e"> </span>p<span class="_ _3"></span>rovides<span class="_ _e"> </span>facilities<span class="_ _e"> </span>to<span class="_ _b"> </span>obtain<span class="_ _e"> </span>values<span class="_ _e"> </span>that<span class="_ _e"> </span>a<span class="_ _3"></span>re<span class="_ _e"> </span>returned<span class="_ _e"> </span>and<span class="_ _b"> </span>to<span class="_ _e"> </span>catch</div><div class="t m0 x1 ha y5d ff4 fs6 fc0 sc0 ls0 ws0">exceptions<span class="_ _e"> </span>that<span class="_ _b"> </span>are<span class="_ _b"> </span>thrown<span class="_ _e"> </span>b<span class="_ _3"></span>y<span class="_ _e"> </span><span class="ff8">asynchronous<span class="_ _8"> </span></span>tasks</div><div class="t m0 x1 ha ye8 ff4 fs6 fc0 sc0 ls0 ws0">Asynchronous<span class="_ _e"> </span>call:<span class="_ _5"> </span><span class="ffe">std::future<span class="_"> </span><span class="ff6">async</span>(function,<span class="_"> </span>args...)</span></div><div class="t m0 x14 ha y233 ff4 fs6 fc0 sc0 ls0 ws0">runs<span class="_ _8"> </span>a<span class="_ _11"> </span>function<span class="_ _8"> </span>asynchronously<span class="_ _11"> </span>(potentially<span class="_ _11"> </span>in<span class="_ _8"> </span>a<span class="_ _11"> </span>new<span class="_ _8"> </span>thread)</div><div class="t m0 x14 ha y234 ff4 fs6 fc0 sc0 ls0 ws0">and<span class="_ _e"> </span>returns<span class="_ _b"> </span>a<span class="_ _14"> </span><span class="ffe">std::future<span class="_ _18"> </span></span>object<span class="_ _e"> </span>that<span class="_ _b"> </span>will<span class="_ _e"> </span>hold<span class="_ _e"> </span>the<span class="_ _e"> </span>result</div><div class="t m0 x1 ha y235 ff6 fs6 fc0 sc0 ls0 ws0">std::future<span class="_ _e"> </span><span class="ff4">methods:</span></div><div class="t m0 x9 h5 y236 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">T<span class="_"> </span><span class="ff6">get</span>()<span class="_ _2d"> </span><span class="ff4">returns<span class="_ _b"> </span>the<span class="_ _b"> </span>result</span></span></div><div class="t m0 x9 h5 y237 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ff6">wait<span class="ffe">()<span class="_ _2d"> </span><span class="ff4">waits<span class="_ _10"> </span>for<span class="_ _b"> </span>the<span class="_ _b"> </span>result<span class="_ _b"> </span>to<span class="_ _b"> </span>become<span class="_ _b"> </span>available</span></span></span></div><div class="t m0 x1 ha y238 ff6 fs6 fc0 sc0 ls0 ws0">async()<span class="_ _e"> </span><span class="ff4">can<span class="_ _b"> </span>b<span class="_ _c"></span>e<span class="_ _e"> </span>called<span class="_ _e"> </span>with<span class="_ _b"> </span>tw<span class="_ _3"></span>o<span class="_ _e"> </span>launch<span class="_ _b"> </span>p<span class="_ _c"></span>olicies<span class="_ _e"> </span>fo<span class="_ _3"></span>r<span class="_ _e"> </span>a<span class="_ _e"> </span>task<span class="_ _e"> </span>executed:</span></div><div class="t m0 x9 h5 y239 ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">std::launch::async<span class="_ _2d"> </span><span class="ff4">a<span class="_ _b"> </span>new<span class="_ _b"> </span>thread<span class="_ _b"> </span>is<span class="_ _b"> </span>launched<span class="_ _b"> </span>to<span class="_ _b"> </span>execute<span class="_ _b"> </span>the<span class="_ _b"> </span>task<span class="_ _b"> </span>asynchronously</span></span></div><div class="t m0 x9 h5 y23a ff7 fs3 fc0 sc0 ls0 ws0">•<span class="_ _13"> </span><span class="ffe">std::launch::deferred<span class="_ _2d"> </span><span class="ff4">the<span class="_ _b"> </span>task<span class="_ _b"> </span>is<span class="_ _b"> </span>executed<span class="_ _b"> </span>on<span class="_ _b"> </span>the<span class="_ _b"> </span>calling<span class="_ _b"> </span>thread<span class="_ _b"> </span>the<span class="_ _b"> </span>first<span class="_ _b"> </span>time<span class="_ _b"> </span>its</span></span></div><div class="t m0 x6 h5 y23b ff4 fs3 fc0 sc0 ls0 ws0">result<span class="_ _b"> </span>is<span class="_ _b"> </span>requested<span class="_ _b"> </span>(lazy<span class="_ _b"> </span>evaluation)</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">57/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
<div id="pf3f" class="pf w0 h0" data-page-no="3f"><div class="pc pc3f w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIb0lEQVR42u3YoQ0CQRCG0V1yG9QFQwOEIhD0hqUxBEUgaeCyijGLw5IgyFzyXgWbf82XqcfTuQAAQBqP+21jBQAAshGpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAB81IiwAgAAebTWXFIBAEhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgDAn00remvv3YcBAPxmnucVvdYlFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkWoCAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAi1QQAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAQCY1IqwAAEAerTWXVAAA0hGpAACIVAAA+GZargcrAACQx/7yrHW3HcurlDGGQQAASOENZ6AZAmZchsQAAAAASUVORK5CYII="/><div class="t m0 x4 h6 y6 ff1 fs2 fc1 sc0 ls0 ws0">T<span class="_ _7"></span>ask-based<span class="_ _8"> </span>pa<span class="_ _3"></span>rallelism<span class="_ _47"> </span>2/2</div><div class="t m0 x1 hc ydb ffd fs7 fcb sc0 ls0 ws0">#<span class="_ _21"> </span>include<span class="_ _2d"> </span><span class="fc7"><future><span class="_ _18"> </span>//<span class="_ _11"> </span>numeric,<span class="_ _8"> </span>algorithm,<span class="_ _11"> </span>vector,<span class="_ _11"> </span>iostream</span></div><div class="t m0 x1 hc y115 ff6 fs7 fc4 sc0 ls0 ws0">template<span class="_ _11"> </span><span class="ffa fc6"><</span>typename<span class="_ _8"> </span><span class="fc8">RandomIt<span class="ffa fc6">></span></span></div><div class="t m0 x1 hc ydc ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">parallel_sum(RandomIt<span class="_ _8"> </span>beg,<span class="_ _11"> </span>RandomIt<span class="_ _11"> </span>end)<span class="_ _8"> </span>{</span></div><div class="t m0 x14 hc ydd ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">len<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>end<span class="_ _11"> </span><span class="fc6">-<span class="_ _8"> </span></span>beg;</span></div><div class="t m0 x14 hc yde ff6 fs7 fc4 sc0 ls0 ws0">if<span class="_ _11"> </span><span class="ffa fc0">(len<span class="_ _8"> </span><span class="fc6"><<span class="_ _11"> </span>1000</span>)<span class="_ _26"> </span><span class="ffd fc7">//<span class="_ _11"> </span>base<span class="_ _8"> </span>case</span></span></div><div class="t m0 x15 hc ydf ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fc0">std<span class="fc6">::</span>accumulate(beg,<span class="_ _8"> </span>end,<span class="_ _11"> </span><span class="fc6">0</span>);</span></div><div class="t m0 x14 hc y116 ffa fs7 fc0 sc0 ls0 ws0">RandomIt<span class="_ _11"> </span>mid<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>beg<span class="_ _11"> </span><span class="fc6">+<span class="_ _8"> </span></span>len<span class="_ _11"> </span><span class="fc6">/<span class="_ _8"> </span>2</span>;</div><div class="t m0 x14 hc ye1 ff6 fs7 fc4 sc0 ls0 ws0">auto<span class="_ _11"> </span><span class="ffa fc0">handle<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>std<span class="fc6">::</span>async(std<span class="fc6">::</span>launch<span class="fc6">::</span>async,<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _8"> </span>right<span class="_ _11"> </span>side</span></span></div><div class="t m0 x24 hc ye2 ffa fs7 fc0 sc0 ls0 ws0">parallel_sum<span class="fc6"><</span>RandomIt<span class="fc6">></span>,<span class="_ _11"> </span>mid,<span class="_ _8"> </span>end);</div><div class="t m0 x14 hc ye3 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">sum<span class="_ _8"> </span><span class="fc6">=<span class="_ _11"> </span></span>parallel_sum(beg,<span class="_ _11"> </span>mid);<span class="_ _17"> </span><span class="ffd fc7">//<span class="_ _8"> </span>left<span class="_ _11"> </span>side</span></span></div><div class="t m0 x14 hc ye4 ff6 fs7 fc4 sc0 ls0 ws0">return<span class="_ _11"> </span><span class="ffa fc0">sum<span class="_ _8"> </span><span class="fc6">+<span class="_ _11"> </span></span>handle.get();<span class="_ _48"> </span><span class="ffd fc7">//<span class="_ _11"> </span>left<span class="_ _8"> </span>+<span class="_ _11"> </span>right</span></span></div><div class="t m0 x1 hc ye5 ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x1 hc ye6 ff6 fs7 fc5 sc0 ls0 ws0">int<span class="_ _11"> </span><span class="ffa fc0">main()<span class="_ _8"> </span>{</span></div><div class="t m0 x14 hc ye7 ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>vector<span class="fc6"><<span class="ff6 fc5">int</span>><span class="_ _11"> </span></span>v(<span class="fc6">10000</span>,<span class="_ _8"> </span><span class="fc6">1</span>);<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>init<span class="_ _8"> </span>all<span class="_ _11"> </span>to<span class="_ _8"> </span>1</span></div><div class="t m0 x14 hc y23c ffa fs7 fc0 sc0 ls0 ws0">std<span class="fc6">::</span>cout<span class="_ _11"> </span><span class="fc6"><<<span class="_ _8"> </span><span class="fca">"The<span class="_ _11"> </span>sum<span class="_ _11"> </span>is<span class="_ _8"> </span>"<span class="_ _11"> </span></span><<<span class="_ _8"> </span></span>parallel_sum(v.begin(),<span class="_ _11"> </span>v.end());</div><div class="t m0 x1 hc y23d ffa fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xf h8 yc ff5 fs5 fc0 sc0 ls0 ws0">58/58</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
|
||
</div>
|
||
<div class="loading-indicator">
|
||
<img alt="" src="data:image/png;base64,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"/>
|
||
</div>
|
||
</body>
|
||
</html>
|