Modern-CPP-Programming/htmls/22.Advanced_Topics_II.html
2026-01-06 09:09:47 -08:00

1613 lines
669 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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,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')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,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')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,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')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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIfklEQVR42u3ZsQkCMRiG4YtcsHQGsXICEWvhVrBwHpdwAwtnECwcwg2srvJMEzsHEIv/5HkmCF+alyQtVpsGAADCuN+uEysAABCNSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEA4COVUqwAAEAcOWcvqQAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAADwM+1YDvochm63d2EwLpfzyQgAfCGVUqwAAEAcOWff/QAAhCNSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAA/J+2P8zHe/rH9ugKAQD+zHLdpTSb1v7VNLVWgwAAEMIba1wdAk/8XBIAAAAASUVORK5CYII="/><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>programmers<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">&lt;</span><span class="fc5">int<span class="ffa fc6">&amp;&gt;<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">&lt;</span><span class="fc5">uint64_t<span class="ffa fc6">*&gt;<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">&lt;</span><span class="fc5">unsigned<span class="ffa fc6">&amp;&gt;<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">&amp;<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>&lt;&lt;<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">&apos;</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">&lt;=<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>-&gt;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;Hello<span class="_ _11"> </span>world!&quot;<span class="_ _8"> </span></span>&lt;&lt;<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>esnt<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>&lt;&lt;<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>&lt;&lt;<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">&lt;</span><span class="fc5">float<span class="ffa fc6">&amp;&gt;<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,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"/><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>dont<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">&lt;&lt;<span class="_ _8"> </span></span>x;<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>&quot;3&quot;</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">&lt;stdexcept&gt;</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">&lt;stdexcept&gt;</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">&quot;runtime<span class="_ _8"> </span>error&quot;</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">&quot;logic<span class="_ _8"> </span>error&quot;</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">&amp;<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">&lt;&lt;<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">&amp;<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">&lt;&lt;<span class="_ _8"> </span></span>e.what();<span class="_ _13"> </span><span class="ffd fc7">//<span class="_ _6"> </span>print:<span class="_ _8"> </span>&quot;logic<span class="_ _6"> </span>error&quot;</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">&quot;runtime<span class="_ _8"> </span>error&quot;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;exception&quot;</span></span>;<span class="_ _22"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>&quot;exception&quot;</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,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"/><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">&amp;<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">&amp;<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">&lt;exception&gt;<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>&lt;stdexcept&gt;</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>&quot;constexpr&quot;</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">&quot;C++<span class="_ _8"> </span>Exception&quot;<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">&amp;<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">&lt;&lt;<span class="_ _8"> </span></span>e.what();<span class="_ _11"> </span><span class="ffd fc7">//<span class="_ _11"> </span>print<span class="_ _8"> </span>&quot;C++<span class="_ _11"> </span>Exception&quot;</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">&lt;</span><span class="fc5">bool<span class="_ _11"> </span><span class="ffa fc0">X<span class="fc6">&gt;</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">&amp;<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">&lt;&lt;<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">&amp;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;bad<span class="_ _11"> </span>allocation:<span class="_ _11"> </span>&quot;<span class="_ _8"> </span></span>&lt;&lt;<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">&lt;new&gt;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;bad<span class="_ _11"> </span>allocation&quot;</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>&quot;bad_alloc&quot;</span></div><div class="t m0 x19 hc y10f ffd fs7 fc7 sc0 ls0 ws0">//<span class="_ _11"> </span>&quot;a&quot;<span class="_ _8"> </span>is<span class="_ _11"> </span>out-of-scope<span class="_ _11"> </span>-&gt;<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">&lt;<span class="ff6 fc5">int</span></span>[]<span class="fc6">&gt;<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">&lt;<span class="ff6 fc5">int</span></span>[]<span class="fc6">&gt;</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">&lt;<span class="ff6 fc5">int</span></span>[]<span class="fc6">&gt;</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&lt;T,<span class="_"> </span>E&gt;<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">&lt;<span class="ff6 fc5">int</span></span>,<span class="_ _11"> </span>Error<span class="fc6">&gt;<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">&gt;<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">&gt;<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,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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>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">&lt;iostream&gt;</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">&lt;memory&gt;</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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;Constructor<span class="ff6 fcd">\n</span>&quot;</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">&lt;&lt;<span class="_ _6"> </span><span class="fca">&quot;Destructor<span class="ff6 fcd">\n</span>&quot;</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">&lt;</span>A<span class="fc6">&gt;<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">&lt;</span>A<span class="fc6">&gt;<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&lt;A&gt;<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,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"/><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-&gt;<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&lt;T&gt;<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">&lt;iostream&gt;</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">&lt;memory&gt;</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">&lt;</span>A<span class="fc6">&gt;<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">-&gt;</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">&lt;</span>A<span class="fc6">&gt;</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">&lt;</span>A[]<span class="fc6">&gt;<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">&amp;<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">&lt;iostream&gt;</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">&lt;memory&gt;</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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;delete&quot;<span class="_ _11"> </span></span>&lt;&lt;<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">&lt;</span>A,<span class="_ _11"> </span><span class="ff6 fc4">decltype</span>(DeleteLambda)<span class="fc6">&gt;</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>&quot;delete&quot;</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">&lt;iostream&gt;</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">&lt;memory&gt;</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">&lt;</span>A<span class="fc6">&gt;<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">&lt;</span>A<span class="fc6">&gt;<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">&lt;</span>A<span class="fc6">&gt;<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-&gt;<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">&lt;iostream&gt;</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">&lt;memory&gt;</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">&lt;</span>A<span class="fc6">&gt;<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">&lt;</span>A<span class="fc6">&gt;</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">&lt;&lt;<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&lt;A&gt;<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">&lt;&lt;<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">&lt;&lt;<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">-&gt;</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">&lt;memory&gt;</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">&lt;<span class="ff6 fc5">int</span>&gt;<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">&lt;<span class="ff6 fc5">int</span>&gt;<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">&lt;&lt;<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">&apos;</span>true<span class="ff10">&apos;</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">&lt;memory&gt;</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">&lt;</span></span><span class="fc5">int<span class="ffa fc6">&gt;<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">&lt;&lt;<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">&lt;<span class="ff6 fc5">int</span>&gt;<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">&lt;&lt;<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">&lt;&lt;<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">&lt;&lt;<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">&lt;&lt;<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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIXElEQVR42u3ZsQ3CQBBE0TvEipAaLFGCO0DURhN06MihNzm34AivpfdKmOhL0zOzAQBAGRFxswIAANWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARKoJAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgBwMXcTcK71OxkB+Jvl8zPCQa/5bQRO1DPTCgAA1BER7n4AAMoRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQTAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAAEf0/nyMdWttjGENAABK2AGgzRP1GFk5eAAAAABJRU5ErkJggg=="/><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">&lt;iostream&gt;</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">&lt;thread&gt;</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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;first<span class="_ _8"> </span>thread&quot;<span class="_ _6"> </span></span>&lt;&lt;<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>&quot;th&quot;<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">&lt;iostream&gt;</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">&lt;thread&gt;</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">&lt;vector&gt;</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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;thread<span class="_ _8"> </span>&quot;<span class="_ _6"> </span></span>&lt;&lt;<span class="_ _8"> </span></span>id<span class="_ _6"> </span><span class="fc6">&lt;&lt;<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">&lt;</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>&gt;<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">&lt;<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">&amp;</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">&amp;<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">&lt;<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">&lt;&lt;<span class="_ _6"> </span><span class="fca">&quot;thread<span class="ff6 fcd">\n</span>&quot;</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">&lt;chrono&gt;<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">&lt;iostream&gt;<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">&lt;thread&gt;<span class="_ _1d"> </span>//<span class="_ _39"> </span>&quot;child<span class="_ _6"> </span>thread<span class="_ _8"> </span>exit&quot;<span class="_ _6"> </span>(t_child<span class="_ _8"> </span>&lt;<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>&quot;main<span class="_ _6"> </span>thread<span class="_ _6"> </span>exit&quot;</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">&lt;&lt;<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">&lt;&lt;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;child<span class="_ _8"> </span>thread<span class="_ _6"> </span>exit<span class="ff6 fcd">\n</span>&quot;</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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;main<span class="_ _8"> </span>thread<span class="_ _6"> </span>exit<span class="ff6 fcd">\n</span>&quot;</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">&lt;thread&gt;</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">&amp;<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">&amp;<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">&lt;&lt;<span class="_ _8"> </span></span>a<span class="_ _8"> </span><span class="fc6">&lt;&lt;<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">&lt;&lt;<span class="_ _8"> </span></span>a<span class="_ _8"> </span><span class="fc6">&lt;&lt;<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>&lt;<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">&lt;chrono&gt;</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">&lt;iostream&gt;</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">&lt;thread&gt;</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">&lt;vector&gt;</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">&amp;<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">&lt;<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">&lt;</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>&gt;<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">&lt;<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">&amp;<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">&lt;&lt;<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">&lt;mutex&gt;</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">&lt;thread&gt;<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">&amp;<span class="_ _8"> </span><span class="fc0">value,<span class="_ _8"> </span>std</span>::<span class="fc0">mutex</span>&amp;<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">&lt;<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">&lt;</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>&gt;<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">&lt;<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">&amp;<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">&lt;&lt;<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">&lt;mutex&gt;</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">&lt;thread&gt;<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">&amp;<span class="_ _8"> </span><span class="fc0">value,<span class="_ _8"> </span>std</span>::<span class="fc0">mutex</span>&amp;<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">&lt;<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">&lt;</span>std<span class="fc6">::</span>mutex<span class="fc6">&gt;<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">&lt;</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>&gt;<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">&lt;<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">&amp;<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">&lt;&lt;<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">&lt;atomic&gt;<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">&lt;</span></span></span>int<span class="ff11 fc6">&gt;&amp;<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">&lt;<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">&lt;<span class="ff6 fc5">int</span>&gt;<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">&lt;</span>std<span class="fc6">::<span class="ff6 fc4">thread</span>&gt;<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">&lt;<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">&amp;<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">&lt;&lt;<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">&lt;future&gt;<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">&lt;</span>typename<span class="_ _8"> </span><span class="fc8">RandomIt<span class="ffa fc6">&gt;</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">&lt;<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">&lt;</span>RandomIt<span class="fc6">&gt;</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">&lt;<span class="ff6 fc5">int</span>&gt;<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">&lt;&lt;<span class="_ _8"> </span><span class="fca">&quot;The<span class="_ _11"> </span>sum<span class="_ _11"> </span>is<span class="_ _8"> </span>&quot;<span class="_ _11"> </span></span>&lt;&lt;<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>