Modern-CPP-Programming/htmls/25.Software_Design_II.html
2024-03-30 17:05:40 -07:00

688 lines
226 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:1.000000;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,d09GRgABAAAAAAucAA0AAAAAD4QAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALgAAAABoAAAAcn3rR0EdERUYAAAtkAAAAHAAAAB4AJwAjT1MvMgAAAagAAABDAAAAVlXnXpFjbWFwAAACUAAAAJAAAAF6W0Zxv2dhc3AAAAtcAAAACAAAAAj//wADZ2x5ZgAAAxwAAAZLAAAICPCK6ZdoZWFkAAABMAAAADMAAAA2JqZLM2hoZWEAAAFkAAAAIgAAACQGMQHkaG10eAAAAewAAABjAAAAdC8TBqlsb2NhAAAC4AAAADwAAAA8GNwa/m1heHAAAAGIAAAAHgAAACAAYgBNbmFtZQAACWgAAAGsAAAC/R/VrARwb3N0AAALFAAAAEgAAABcAvMDr3icY2BkYGBgYmT7J/x4bjy/zVcGbuYXQBGGR7rMq+A04382Zm2md0AuBwMTSBQASgUK1wB4nGNgZGBgevefjYGBWYqB4b8zszZDCoMoAzKQBQBlkwQaAAB4nGNgZGBgkGXwYmBmAAEmIGZkAIk5gPkMAAzHALAAAHicY2Bk3M44gYGVgYGpi2kPgyxDD4j+P5fxAYMhIxNQlIGVmQEGGBmQQECaawqQUmCoZHr3nw2o8h3DL5gaAFssDSEAeJxjlGAAA0ZfEAFErQz2QMzMKMbgxlTPkMD4kMGTiZUhiHEvgz2QtgPSdoxGDKmMXxgYgfxAhvcQzCzFEAjiA8UtgLQmYxhQTz2DMmMmQyqQH8N4liGHaTVDDpBmBACvbxLgAHicY2BgYGaAYBkGRgYQKAHyGMF8FoYIIC3EIAAUYWJQYNBk0GEIYMhkKGAoZ6j8/x8op8CgARZLZMhhKAKJ/X/8/87/W/+3/1/+f+n/Jf8XQ81EA4xsDHAJRiYgwYSuAOIkEGBhZWBgw2YIGmBHF+Dg5OLm4eXjF2BgEBQSFhFlEBOXkJSSBvprUAAAdigZvgAAAAAAAAAAAAAAJABIAFgAfAC0AOABCAE2AWIBigH4AhgCKgI2Am4CkAK6AugDAANKA2wDjgOqA9oEBHicVVV7aBv3Hf99T9KdrNfJp7fkKJLOPkeW/NLJOj1iyY4tWZYyyZbkhxTHtqx0IcHt0oXR0NK09JGkBm9k5I91bcpoKS20I9BH/jJ0C3uF0W2MtTC2ksFgY2xsg5GxGSLveyd5SUGP30n3/Xw/n8/3cQRI5oCGv1J/JxZCNLxgiUlpShJphmZM4KXAMflatj/vrwV9k+ezc7xVwwrO/VuQfeuZ+BbvWnn68ttr32ud6idAVIhzq4MzgMEUw8ckBIMRalC0w3nfSQVke6YL0jv52v4bz8sg9UtdEPstgji5gxfJT0iV0IRIDC/xkvhRNhh1cVW4/GyVUGSTEOoH1G2ikzOBCUKg4i1ixM7EBDyKkRh1i3tz/Z3J+o3/PvbElmlhcTe9W30S/lZ7qn2Pun2pMr3Y/kLGmT+4D3+CT4mTBAjx8xLNB0Yo5JuBmMAHGCmGmCxI6IRdjEgxeLWonTt3dMhEa0zvXeoxCAMLi9paJVcwf834S5YeE0Z5oX/UI4TMmRkqNDEZORFqFm+mdVkvb0GiFKkc3Kf6kbeJuNAhE/CBQQaJq2Id7nyABbvMnrXtnJwf15VuFKeW6tmplmVqYjY6astI2/daVxMj1O3256lXNlZqqS+mlmS/MqjjX6jDIfvOBwSUgIgOZgQzdMnDu0v1tQ2r9TutkeOD7kAiOL/GsvH0yuIxcWdj/TrnmnZz57KFzZjMM408cwpPz6EvHUwHkpWE/4PG4IOSvlTN5222lwplKVP80ZA7JW1buEwsODgYzVzdal6TQHjw2c+kWn15qc/bwYY/IldO8cCv4DAPE3R8oBn4tP1z49TxKhq83GjarDeqDZ9nViOFQ8vO381vxqejO63mzvzkxFQ6F5c9eAw//kH9UPYAEMFEsSAyPPYFdk8HGv7ADxk9A30a95OGJyrFSsFQsJovzgXC1MVeDcu7n0q2L8MLyUahqScqAgcRKgU/JcNEIvMdTJoftDNK1VB/CiJeSrmSmUsCNnpXQkykZQ0muZaW2AgVAmTD2GiltPFjnCGqVzsNpq/PiH5WrU+u9g2XeJ3h26fXLhg0wWNWXY+A/16cjvsWa792Dg0ETjjD/MCqxjNxpLfhFrgeYMqZdAuuqdQQjs9sHmFtE7Q9M5Yol+OuhM0XDgfD0uyGz/fb7WjkQqTddh7Vqzh3Lw2BcJgQ2atFLLIF62uWq2uJoTIWun3IwIeltGMrmjVEsf1m8svX/MCfbaTuY9Pdzd+U4yk5Hkapb6FLDCEiRsoj+npxvRioW+qw93S9kwPGMIeqc8frxRtFvFJ+V4XQV2XiLLgboJv+kaPIxBQfIwx1t5RWg07wi1lj9NHjZt5cXG3pC6d3eAzo67cixYeHO/mvVCo3H2rFfNyXtTJp6stiN/Nsj2/h2KFcuDOn9whdvXGcBxf2rF6ZsMOaHw5tZxhilNp281T9qzbbG2uNVpM7kYyf5bipROrs75tXXt5qfXO3UV1Zri2tne5gBg/SFI+8lBl7uAuYR3YB7TjcBsXCuFi6WtRV13OpLTaZmBFDasYZTT5+78yVxD+py+PHd9azreRdi3l0CzVXUPi7iK1TtmPXUQleLXzDPFzczFlrF+Alqln8HO6c2gC8n8eZ/AD1jSt7G4dxUFLGG/c2vlCrBsvByCuR9lIOLxwFrwpeZOPj8+UF9/TCOqs2eB2c33XEOGxgvEPCsNVQyLil8pJRrfO6XMGQXa1iGHh+rt8Xnh3PWjwso2Zooz6YOjrm6aUp37SQ5pysVqPlnLhbnW55npHTd6mUXDd5p0nKHIsMzjRD4zqrVPIVd6JmWPFkPbuG3YneM7h4XwB98rnnkvtVf6fP17BuvbDXqX1ni2GXK9XCA3xY1C2cSwUMc6Wc1j4uVvSTpbHUZArK7Y8HfIkJCMgY21isPsTQE9IDvEq02BkxlgGqr/3v1VJpyEyBZeEZ2GvP4vtBPRR5+Ved3HLcPsZhdfHphCbycuOpREcn/vCb2v/zqlWrAWPufDl00mzUQG+hmbMa1GDIPy7D/qcRGbvyC9j7/vvh+PW9z64F/dd/I+PDgajwssu8lPaRayY/u7o5LEjx41DG1x/Q9g/qDEc46Uy5b0gL3I9h78FfssPaabPa42nA3rOfzGUhTf4HhQukzQB4nJ1SzU7iUBT+bgUyk6hxNxsXZ6nJtKkFF7CYhQZNiPyEgmHbaoEG7NUWQniKeZHJPIHP4iv4Cn7c3pkF7uxNz/nOud/5bQEc4y8Uyuf+P1b4pn5Y7KCmPIsP8FP9triCE/VmcRXHzpHFNZw4v8hUle+0/pioHVbkVy12cKjE4gNM1KXFFYh6tbiKU/VucQ3inOIaGs/YIkeKGeZYQRDA56nD5Slxk96YLMEVPMoOIjxgwdgNCuqUvggZHs2dh65h9cx9ydwxzmhnJlPCShGWmNLSRo7om1CPEaKNIaXglrpPz4DWOTPiWj9v83Q2X0ng+3XXpWxKvJUrTzrRw0JvikUqUfYoHa/rSU9v6EzlTGcSJ/NoORU9lVEykXHYHoZyO+yPB+E5896x4dAMUOCC4+KuG0ZZcUG0myHHk+kWPZ0/RdQ3ZpCV0TnXlpileYwUtPju53M5RswEKV6wNuyWiWjypm6XHKDBxDpb3eh8lkjg+dKSf324/XiZvqwTuoKmW+fgQeNz2/tlsB+++x0TdlyQUn6KsmuftYWXSV6kXBZr+w35Sv4P971+QHicbcO5DYIAAADAA0pNmICenhVU5En4Il+chpnpgQG45IQc+3WTupNcA6HIw1Ms8/L2kfsqlCq1RqvTG/yMJrPF6n8Cz0cKoQAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIZIGYB8xgABNIAS3icY2BgYGQAgtsKp6pB9CNd5lUwGgBBbgW6AAA=')format("woff");}.ff6{font-family:ff6;line-height:1.000000;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:0.915000;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:0.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ff9;src:url('data:application/font-woff;base64,d09GRgABAAAAABPUAA0AAAAAHLQAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAATuAAAABoAAAAcn3rR0EdERUYAABOcAAAAHAAAAB4AJwAzT1MvMgAAAaQAAABDAAAAVlWZXqxjbWFwAAACTAAAAL8AAAGaEzDrMGdhc3AAABOUAAAACAAAAAj//wADZ2x5ZgAAA2gAAA4YAAAU9NC4XWBoZWFkAAABMAAAADMAAAA2JghLEWhoZWEAAAFkAAAAIAAAACQFVQEcaG10eAAAAegAAABhAAAAZAwICJtsb2NhAAADDAAAAFwAAABcXrxkDG1heHAAAAGEAAAAHgAAACAAcgBSbmFtZQAAEYAAAAGtAAAC9Oimu2Zwb3N0AAATMAAAAGMAAAB8BDz71HicY2BkYGBgYmT7XixWEM9v85WBm/kFUIThkS7zKjjN/V+GqZlpG5DLwcAEEgUAMs4KdQB4nGNgZGBg2vZfBkjyMjD872JqZkhhkGRABqwAbFUEdHicY2BkYGDQZfBnYGYAASYgZmQAiTmA+QwADvQAxQAAeJxjYGRiYJzAwMrAwNTFtIdBkaEHRP/vYXzAYAiUYmBiYGVmgAFGBiQQkOaaAqQUGKqYtv2XAarcxvAEpgYAF48L7wB4nGOUYAADRl8QwcDAxMvwgiGU4S2DN8N1Bj2GIoZyBkuGVgZ/BiUGOYYwBmWGGAZxhhKGRoZOhjqGLgZdBheGCIZ+hiMMxgwBDPUM3AwdDHEMyQxzgLwAhgQICQDnHRCoAAAAeJxjYGBgZoBgGQZGBhCYAuQxgvksDBVAWopBACjCxaDAoMygyWDEYMNgx+DE4MngzxDPkMlQ9f8/UI0CgxKDBoMeWM4RKOcHlEtkyPn////j/4/+3/t/6//F/xf+n/t/4v+R/1v/b/m/CWoXDsDIxgBXwMgEJJjQFYCczMIKYrKxg0gOTi5uHrg0LwMfAwO/AIQjCCKEhNFMEGEQFROXkJSSlpFlYJCTV1BUUlZRVVPX0NTS1sHnNLoBAKenJUIAAAAAAAAAAAAAAAA6AIwAugDkAPoBGgFGAXYBzAHyAhgCWgKeAsIDCANAA1IDnAPSBAgEVgSYBPAFPgWOBdwGDgZyBsoG8Ac+B3wHxAgeCFgIrgjuCVIJvAocCnp4nIVYCYwk5Xmtv6q6q6vrPru6u/qovqv6vs/p2Tl2jj2G8Y5n9iTshoXZgwWzS4AgYcCIlRdsdoyvOLZJghzZ2AZHiFgYyYosR5aMk1iRIuWQIiuOEhkUW6yUQyzamfxV1T3TuyaKRqruKmm+/33vve+oRlDkV2AJjaAPIiKSRhBAsGgykSmDxjRo1WuqIgd+6wnYnME8jJ/lAEAzPktWvzuD4Qzl3lNZWUUrf+0nfSxBeHzv1EMszv/c7yOd25/VQqwHQZF1BEE/ht6LdJEpBEnJeUB44RnNRju5+yXR6IPR1T2WA/W9bzX7f+rZJFFHw6W1uj/IKqWz7kekVG63O+XSx2uMysne7NnRp14qt9rtg2fbZ99deC4q8f5H3evCSwvPRRSW4M6PPhZeeuklBCC/3nkdvRv9PhJBEI9so8pCXEPcQcDaPEFuVPAqK8hzSrUwv3qoSwusj/CfeLpzgWmR0mxy7b7F5zdPdOMS6aM83sZXv3pwa4NEIMnIwZ3XwdswdgjeyCzupjwEzYZ9hp0kjPy2G5Pltauf+V2ZZ+1jwFfciALFs4f/85HrqwJDCfAgO+bfw8sG8iTiR5C07LLYqqlgIx9RjWIjuhguRIJRM+GcX9p5DX0cns/Z5xNgxLmjL/o4ve3hBE6mwS2W52T0837h1pKksH4BfVtQ4b9D/S7v/Bdah56hRxkA+/+HUBaVaGSSCRYoslqvDQFaP/niZw4dv740szpfy1fvmy0WaudmwSubP33ysfWzP3364XvmVu9/dWP22JXvOLgeg5e/Qi8iMTuHPEg0ofwSRAdTaQ9RW/4oDE1g9Rr4sflhzjq92aobLKPGZ2MMz3AY9sxazjB0A3w9o1MKQIlqQWYoHOVu7TjxuxD3EOIe2PFtX2chWmJ8AHAkcPC7z4aoqzZKeAkoSb3WsiGg/WDxUL6yOBOJU75QMhc1F2uPnF1shqYOC0Q4kRycba9dMo8stjdLpaVBND3LEeHkN7jWVDGixRWdXzfyRbWyMmwMxNmmoivD6eKZw5WVQSpQ6OCaNFXXHKzPIR30KFpAlJGe2bStUdotAcIDHfIfCsuw2++KGniK9zFqcPvb78snOdn/t4yoMj/3CfD6gzcYO9ZdMJbhxoJ6e0Z6p0duC3hU1NC2n3GCgI33ZTsuCIigNhFGsgOzUHvoIHATfQjJINauSpAWWLqOOPa9TROwyYMPMHjJSlkM3Czcb0keE32lxgtC4f48ED0FZMen8LzAMaQgCr/PgC0onkag586hDGPoAQJDBY5HUV64dQNl3gRdsP0TyA2GRKEJ52H/0JAUUnb4GZsl6XzYFHkJeHCjhNmNotYiGiXU/YYKnzr+fs5KPCHnzHfnFk90sh0JkEJKe7K2uXS05hWy+rXuU7Mnf7b8KWikd3VjoT51SvD3/sVDBUX2nfX3mGBM+uWao9EGxLEKcQRsXvMA+lKRk8YekrpRQ1etK0/cl7O2/9V0vpggaqKLxnZAN9zwdpwkjPMsjFMdxWEh1kQJzWJJJ+SdyQWkupQoAecGfdaKPWO3Xz8n+lB0AB4VTOtCzow/AT9zTQ0bgN9TJAE+gqfe+oBjUZwhKXBjOzsG4A9vc+Afbcad2j4Fa+QArBHeVjrNAuiVhth2iluR0eyoRLzEqMhb4N/jxy6cXlrSjKMP3rO8vMR2S/tWpkJ8qzS8a3DpYDH1OEj2ViupQW/7Hzz5X5bNcHm18s+lbLSGOBwGdo6DN3f+CCEQBLfJg6SBN8vbPyqXwfSZhQUH0yM7N9EY+HPoubqjtl2eJZAddTno4KEjOYF5Fblea9vWyzooFTkKbM1jMmNUtCyHNwf1uasQDSaFZHwGVwK8x8uyyW8EQ+Uz3qBcPrNFzqitgEI21xbPv5UjeYn1cNsf8r7IQZH1X840vnSES2W+ADE9s3MT3Bh5EKo2qqmxRvaUao37oXfE1I3rG51DvrWuad1tYlaj0T+wPxVpnY8nWueAcv6NjQNGHByEsqDcNzMn5gvNF9dSg8/aHF2D+Qsw/9Ru9uNBoYwPdo+ByTtNXJgKlteOmM2XzzTn9ICgCVx89tHNT9RpPx04oKR8XK6+cu7b7Vw4oUhBWry6erFEBtze/kl4lgnzspD2R3Pd3k3x/+bbvJPvTMG0PmZiV/5fxr/i5L/d+i3GbWzPj3hIIoVJbLtc2I0bFsseES4qWPYuI6FYTSm/fLq14LNSvU8YrPd+l5IjsVDhnmD0LxxqMFUprl78036RTzS5ECE9AKn5b0nb33X9WtzR0T56HpneU73VbNin2OfYxYrZxTGmy7YlFH9sjCGwJ429RaD9qCxoeCwsejBmxbSOTrMyPVupDiIKF/LSTC/d7eXMORzHUNwjaoVor4fGg9GA4GOARw5Qi7qx/YerzeRSzlANWeZI7O/Aft2QAh6aktW0wpuunvMQrww5y9t6elgMMoZOIhui0+DOQuLApG3/xKtXP14PxqqhiCIGUCGc6cdYTG80uode3OhnMAWW0r3QxJuJWHtzRS3XYpg/ogaiGu/zolpKJR9Obyyfe73MinYxHU/3X1g1246vj4281h/PY9vJLUgmi8MF6yMLCoJ25G05rkNNIdY1kkWqa+rlbCTCM7hXgHA+WXTsZpVnqoMOzQopCvNwTHLLX2yZ5bQc+fqpcKd1sluFs0divSz4H8d138q2m62vRRmllKUpEnJ3Hdb4e+gxl7vxVgX3YFdvW+Qxkxw6gQqTdwlVwXun5syOb80TVeo8zgoJ+1bU4mpUq9MYDkEVYoKsRqAXtlKXq1lJ+RvOG7ZqDK2nLtcyYnGw2vOGqxbpI8GzSjjIi1HV8eFfQmy/gNwZk9xJt9emXYx2HYBf8NFesnQYv3jStJ42sct4WCHyIbiXbJGFtlWtsDx4zS28HuvlJOxkyDmjDvXpQ+8sj7IvYbY+zZFAbvp33k+jzpoWsN20J1hARWOsgJMKz0ilsJI1QiGapGg5meLDt91yZM6nekgGmKUpsT5MVkyNChmUCnxsXEk2nzVz8WHvWDGVF3XiWvkefe/W++li5JUYxlKJwaBaqT42p4ko5tbsqu0zmMc+hysw8pmNm9it1bY0lhUd5XVbAqM2h5raPsuwqG68V0ln/JzMyPgCxlAKjns5NiFRkVpXas+Wmg2BNDTXdOzMYjGlGH9ctE4s/4EZcgwXoOlgWxEYv07OKvC9pFNpfrFK8esU5Ye+ewpq+wHES7mbxZ6bbhsnH3zx2PCuLxzvH5lPZXqXMqneJSA+8N27F85/7+iBzPCFI1bvszAWtZMAHzr13xnFgh2TmFwrXCLuTJuYbOjgw6urgbyAVoo568umlXoCU2TZ44EZy0yk0dX67ebM/t2ODvQLb8kC9mNnw/gVTUQPi7Rf9+9TW83mxszEDP30TgINQmwxiA6+ZY0AtSfakbuB2xs/Npn6r62fmNZipdnoHLq+Psj7fayfEvBrHXNmPFB/CM/+UWbjwMU/awYEhqe97K1/Am9NzNTfgZ6Yg2dXJ6Z35iMMYb/rOc4eYvaLmTNe5wxR0ES1Nqjkcq4H5vEII5NeDyMnvGKwGI5X/a2D/XWwakRUMcBpawdetpX3cEDkfPGIHpQ5HdPLZswI9pqOR++Fmt8ce9Q7einZmx/23gU3QnfajWhxtBzBdtaxQBQH/5aLd4+9asCewofn91mBoJCUpF5GSgnpQ/X9yxGR4Hm/WqpEVdGqy3o5GvhcfEZOnEmEQ6zMKyqd4xiZwXGKYnVLtAqRck7XPRIn+jmeMihZIDGvqOYczF+DmH8DZ6G52x1HDWjiTd2diHvNEfzm0lK5Nwcn3t1pX5SVcMP+ug9PxQcC3Ayo5Fb80U4WBHXjSylIGHsVzrltzpdopCnSN1HLQ7eWCW9itJu0J3082lfdyh3/crG7r2B2IRMCGTmrFdql6ZafSgcxnGcSoVkrXqTr1nIh7w/TCj6HC5KMYT7Gn9zCYyWhkc8P+u0v65R4zO8ndW52fyGrJF6odL/1WpIXvNz2Dc6nr1Ikg+/2HQ1iLTpvyegEzNsFdmAN4VguA/sRqqmFk73BStunCAWO0BPrw0yNaiykpmICjqusCc4Fz1+7d266/nnVp5n1oJ68Uk1LkWvW/mNXjtICxXOKc/5peP5heP4S5MpeGr3u8G87TTs7emePYrZQtxHFAvhg1PVau79KQMOhfOnwfCzVEdNZTSZ4VtRRnvXQAYEVQuywnaoRARrud6jg5ZluOZEjIdps6eLDnQ4VbKQqlYBlShEUC+KUCPxCUjNKy6nE3NY7UYECkk7MKftLoX0Xnq6HRB/JKfPFN27v3yvjd2HvHetVyxnKmYn2vdu8x7Q7te3kqe5tD5tLnYzVr7RicLFRvSGpROaxsKZPcfZkTmwu9pLlTr5HyzQhaIo3qAdZKsyFtcgUA1s7ndzKPpTP9zOJuMYHOTWe/B7JBOPlAkn69NyD+XyzoEZoTBVDnBLkrQcGTChWNf0+cpSTjoZhTov2VuZ2nHG3cwB6b3PLyNXopF+waTB+AL4vPbla7DMS44VAfaH6Kb5iVBfrjKCkaXsKJUSjZySqqtkMFSIRjpIwj8BAgzOHn2/llQgFUWqccumQNtjXft7wq9UsRZI6VWplizm1+1BxmCgeaZeXaZq3bT72lr2Lz45n6uRvKfZfJnuHHqo7Qt01ffyDiqODYB6tJfMxIROg1GQrnZk6KolCTFJyJNSBTq71Y6WEzBMETSfia4P1SFTPiPqQd0R6JXBof1RJCDqznM40ViSfX0yG4bakG6ejSpAmPTpVPd5Yjno4eB58jvwvbq5u5HiclVJLTuNAEH1tkjBICFgNG4RqCUK2jBNGCksQICKcRPkgtk5wEivBjRxLUQ4xNxnNfo4yR5hbzHO7QSKscMtVr6pefbpsAHv4DYXyeXzHCt/UocUOasqzeAtn6qfFFeyrvxZXsedsW1zDvvODTFXZofXLZBVY4UBVLXawq8TiLTyqC4srOFZ/LK7iSP2zuIZj5zuuofGKNTIkmGKGHIIAPk8dLk+Jm/SOyBJcwaNsIcIYc+ausKRO6IuQ4tnEPISG1TbxklkwTminplLMThEWmNDSRg7oe6Ieoo8b9CgFd9Qderq0TlkR1/p1nSXTWS6B79ddl7Ipo7VcedKKxnO9Ws4TidJnaXmhJ229ojORE53KKJ5Fi4noiQziJxn2b3p9uet1ht3+Kes+cODQDKdxzuviIQx1qs+JijtkeDHToq2zl4j61nBzozOuLTZL85gpuOS7Wc/FPdlFiYTLKDkBl+qaJRcrDtBgWZ3mtzqbxhJ4vlzK2xTufR4tkjE9QdOt89ZB4/PMH3tgI7f4EWPOumS0/AjlvD77CoNxtky4Jvb1G/Ll4v8B2+Z7UQAAAHicbcw7DsEAAIDhrxWWWrxmkbAx1BFEvRPUs8VRnMypLNbqAfon3/oLKb6/T/GWqGpSCoRq6hoiTS1tHV09fQNDI2OxqZl5+VhYWlnb2NrZOzhKnZxdXN3cZXIPT68/pdEPBQAAAAAB//8AAnicY2BkYGDgAWIxIGZiYARCHSBmAfMYAAWCAFt4nGNgYGBkAILbCqeqQfQjXeZVMBoAQW4FugAA')format("woff");}.ff9{font-family:ff9;line-height:0.922000;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:1.000000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffb;src:url('data:application/font-woff;base64,d09GRgABAAAAAATcAA0AAAAAB0wAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEwAAAABoAAAAcn3rR1EdERUYAAASkAAAAGwAAAB4AJwALT1MvMgAAAaQAAABBAAAAVlOtf5BjbWFwAAAB/AAAAEYAAAFKRGzkw2dhc3AAAAScAAAACAAAAAj//wADZ2x5ZgAAAlAAAABgAAAAZHRuLQNoZWFkAAABMAAAADIAAAA2JoJK9WhoZWEAAAFkAAAAHgAAACQEWgNzaG10eAAAAegAAAAUAAAAFAVwADhsb2NhAAACRAAAAAwAAAAMAAAAMm1heHAAAAGEAAAAHQAAACAASAAkbmFtZQAAArAAAAHAAAADUdeLqtNwb3N0AAAEcAAAACkAAAA0cF7CxnicY2BkYGBgYjiSHqnjGc9v85WBm/kFUIThkS7zGjhtwdDKdJExH8jlAKoFAgAutgoYAAB4nGNgZGBgzGcAAmYuEMl0kSGFQZIBGbACACbrAdQAAHicY2BkYGBgZVBkANEMDExAzAhmO4D5DAAGEABtAAAAeJxjYGRsZZzAwMrAwNTFtIdBkaEHRP/vYXzAYMjIBBRlYGVmgAFGIHaAcQLSXFOAlIKSDWM+WDIfroYBACguCggAAAABGAAAAAAAAAFNAAAAAQAAAwoAOHicY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUlGz+/wfywfT/x3dPQNUDASMbA5zDyAQkmBhQASPEiuEMACp9CVIAAAAAAAAAAAAAAAAAMnicY2BksGBoZbrImM+gwMDAKMKmrKSux6isxMfEDmKbmpgZG4nLMRobmZkDWUwXY7zcQh3dtMW0tWWY2Nn5oFzjEGZmbj5GP98aHysdASV7TVYhBTDb30OKgQEAGKsRBnicrVLLattAFD2j2IZCSXftppS7KSQLDYqULpxlTBIwlhOsuAS6GieyLfyYICkYf0N/pXTRj+p39Gg07cKLdlMNmnvmvs+dAXCM71Bov89/sMIb9dHjAD018PgIifrhcQfvgrced3EcjDzuUf+VnqrziqdvLqrBCh9U1+MAr9Unj48wV0OPO9Dqp8ddvA+0xz3o4AsGsHjGHiUKLLBEDUGMiCtByNXiPrUzegkuobkPYfCIFWN3qCgL6gy2eHI2jdR5jZ299Ww8Tnjeukw5KxmsMefJuv2eugfKKTJcYcJdcEN5S80dT6fMiIF93pfFYllLHEVJGHLvy2wvl1qG5nFld9WqELN9kqFOtYztjspCTuxWZvnSrOdi53KfP8g0u5pkcjO5nd5lp8w7YsMpG6rZVkaaG7Zo2V6FM5LHKE1Nvcz2m5ldV2dUNMRKejUUMLblxlBeO3a1kyVnmbtJaiYQXPD/e5GQXHNGvVBjGN/GxJx86G6iuYcY5yxjt/W1LRe5xDqSCzloLpzki5e1KWmJ+2HCEcXn/yJ4WPuQ8O+czWvOaa94m+1NtvyatyI05mVVcNbsK0rkvxX9BfZnlWZ4nGNgYmD4//Hb7v9NDBoM2AArEDMyMDEwMzKxF2fmZuYkFgEA/qMIUwAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9CNd5jUwGgBBggW+AAA=')format("woff");}.ffb{font-family:ffb;line-height:0.234000;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.916000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:ffd;src:url('data:application/font-woff;base64,d09GRgABAAAAAAksAA0AAAAADHwAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAJEAAAABoAAAAcn3rR2EdERUYAAAj0AAAAHAAAAB4AJwAbT1MvMgAAAaQAAABBAAAAVlXlXsFjbWFwAAACNAAAAIkAAAF6Ke4702dhc3AAAAjsAAAACAAAAAj//wADZ2x5ZgAAAuwAAAQcAAAFTAv4D9toZWFkAAABMAAAADMAAAA2JmtLPGhoZWEAAAFkAAAAIAAAACQFzwIjaG10eAAAAegAAABKAAAAVB/zA8Rsb2NhAAACwAAAACwAAAAsC1wM+G1heHAAAAGEAAAAHgAAACAAWgBJbmFtZQAABwgAAAGoAAAC8ZCLzDZwb3N0AAAIsAAAADoAAABMAeACqnicY2BkYGBgYmRrNfz+NZ7f5isDN/MLoAjDI13mdXBa+D870z2md0AuBwMTSBQAVscLtQB4nGNgZGBgevefnYGB2YCB4f81pnsMQBEUIAoAeUQE9nicY2BkYGAQZXBjYGYAASYgZmQAiTmA+QwAC4sApAAAeJxjYGRcwjiBgZWBgamLaQ8DA0MPhGZ8wGDIyAQUZWBlZoABRgYkEJDmmgKkFBhKmd79ZweqfMfwE6YGAOZAC1EAAAB4nGOUYAADRl8QAUQTGAKB2JLxHYMZ40kGFSBWZrRikGFiYpBl+MrgDcRBzAYMgUzCQMzEIAekgxnjgbiLQZaxmEEYJA4A2gAL0AAAeJy1jj0KwmAQRN/3GeO/xmhpkVJvZCsiIqQQ0fMoJt7KzoOMm0QsgoUIPthdZnYZFmhQ1QxHwdGUK3XA0mZMZI4nYcGKNVt27DlJtkuYl97GvJSDpIfuuilXpqsuOr8ya7iQ98J5a75+UL1UEDQ/JXxBSIt2p0sP+oPhKGIcT6Y/Zv2BJy9aGRMAAAAAAAAAAAAAAAAAACAAQAB4AJ4AygDuAU4BYAFsAaABwAHmAg4CJAJoAoYCpnicXVRPTCNVGH/ftHQWarsMnWlL06ltp/8obaUz007asoPLv7ItfwoDhV1KaSvixssqMVETXbIKREkwJMaDBzmsya4JV7OnjREuXvRoYqJZD3snJqsHTRb8Zoqmmpn35s30fb8/3/e9EiDzFzRUqTPSR0iXkIKM3KdIdjPrM0H1+q3Xb9eu97+YF3hvKO//c/r58UNyMeMJrTWPvv6iVYsQAiSH8Wo7PsxaaEE1yylTVPIBqJ3BbgT762FnsHv6OSEUyV78AQ/gB+IkYUICQsYiBCMZOatk5IgQpKNZSXRydCZopzjWKYmKSsGDyujtQuHznfTA4qRlViu1tKvpaj4bS/kZhoqktcTwmCmeviYXE63SZ7L5haCbFxw9HoYQXW8I+Y4NPhLWuWSdwUWnQAha2hRwXFlpbL+/KatJW3Q4VSrOjiyXwkP73xw6+ic97GtjU3VJx6KIcInVR/oRLeADjHZdGpBEl7ONSsPx+SlVVbWSZWa5fu/d5boYG7ZNRVMTtp8nGpmJ9P4rzf2ymhqTxsW2Ri9OG9SJrhEwC3bgQeIEBq+M1IaGjYE4K0S27lTK5daNSIK6w1yJBt5Szz+Au+pKuWVFHBPhL0R4Bt+RJMmRiTYWx7qcHIsao+i2AKLPjG+6YOVy6OhZidaz385H1iEPQtByFVinmIVnfFI1e5rj8mB3vsbwSnzQvfPthy/388HmuJIoVb/KREKKPlY/qgejFFV7bxV2zF1UVyI51uDtrEzRDl4K5OYqysiAfzAZeSk72vT7v5SltILj/PvRQG9vMD5o5LeM8zH1KTqhCZEERlIwAfcrle5GAx6/3TBytYDzfeoR7jF24K/4gt/nEeAJeg/pXcVgT6IfHjpXEtf2KnLUEw2sjgGvLP77nMnXXuVHagcQtPUF2N6V/O8dq9Pi9MLCUbtWyAMnyMP+j8dA5+CkE/HgvxhHukcf9tBT7CErcRkn6J/ucXaWAJ7u1mt7u2vrO9pSIVfVrhUWf2nu7bY2Dj65Ob+0uDBfW9WxtAsVzlCLnbgvsaLcpZI2HM3pNTx7Y2ZuWKuUG5O3tPncWCz8zsqvG3u536i7Q4X99cl15Se1aXjTcKogXg8+9SY0sBSoFDcrpdE3YRvWpn+E09U6hXt59LGFPpI6s51CagWVq5ScgijeaEo1Ybppowd94PJRLidsBZSM96Zmm1q2chG34HPn0p6YP5b32GeLtmKp6vd6wsFob/pevOC1Jm6Iph4+5e82WxlXLB3O9tsp/2S04PRe6aK7GXvc0OxAHVWqQBzt850xzozE4fnhWP1wV0uz1aWV0uGhLMY94Y+BqNvb6tmy36glxp7AYz0W/4nsoNeCkRijBLiAk0pgcygrabwoTWlDvC83AnPnj0I+WYEA+RsjIhYreJyVUktO40AQfW2SoJFGYTFiB6iWIGTLsrMJSxAgRSSgmCC2HegkVoIb2UFRrjBnGbHkKBxhzjEv7dZIZIctV72qel2/NoA23qFQPw//scKu2vc4QEuderyDU/Xb4wb21KfHTbSDhsct7AUpmarxg9Yfd2qDFdqq6XGAn+rQ4x08qMTjBo7Uh8dNHKi/HrdwFPzCBSxesUaJHFPMsIQgQcw3Rci3xl16x2QJzhFR9qDxhDnPrlBR5/RpFHh2sQh9xxq4eM3cMI5pFy6TYSWNBSa0rJP39D1Sj5DhEkNKwTX1LT13tE6YERf2dV3m09lSkjhOw5CyK+O1nEfS009zu6rmuejiWXpRP5KBXdGZy7EtZGxmejERO5F78yij7HKYyfXwdnSXnTDvDRvO3AAVR8VNP9NFRbAZoMSLaxUDW75o6is3xdLpkjszbmMRtyQ44/c1WcgZDFlvTKHJrzmJi6R+vwk6TGuL5ZUtp0aSKJYz8U2EQzN9W+iSnqQbphw56Ww3vF0DW2c3f6Ghv+It1DdQ9xuzrjBoyirnjlg37si3k/8DIb58tnicbcNbCkBAAADAsT75dQUnkZCydvM4lhsj36ZG8LkvrT/NuxCUKrVObzCazBbRKsk2u8P5AL1yBooAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIRIGYB8xgABHoAQ3icY2BgYGQAgtsKp6pB9CNd5nUwGgBBlgXCAAA=')format("woff");}.ffd{font-family:ffd;line-height:0.999000;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.922000;font-style:normal;font-weight:normal;visibility:visible;}
@font-face{font-family:fff;src:url('data:application/font-woff;base64,d09GRgABAAAAAATQAA0AAAAAB0wAAgADAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEtAAAABoAAAAcn3rR3EdERUYAAASYAAAAGwAAAB4AJwALT1MvMgAAAaQAAABBAAAAVlOyf6BjbWFwAAAB/AAAAEYAAAFKRGzkw2dhc3AAAASQAAAACAAAAAj//wADZ2x5ZgAAAlAAAABcAAAAcJpimDFoZWFkAAABMAAAADMAAAA2JpdK/WhoZWEAAAFkAAAAHgAAACQEcwOIaG10eAAAAegAAAAUAAAAFAWFADlsb2NhAAACRAAAAAwAAAAMAAAAOG1heHAAAAGEAAAAHQAAACAASAApbmFtZQAAAqwAAAG1AAADRagRBI5wb3N0AAAEZAAAACkAAAA0cGzCxHicY2BkYGBgYjhSuXPh23h+m68M3MwvgCIMj3SZN8BpS4YGpqeMJUAuB1AtEAAAdDMLwAB4nGNgZGBgLGEAAmZ5EMn0lCGFQZIBGbACACsPAgIAAHicY2BkYGBgZVBjANEMDExAzAhmO4D5DAAGjQByAAAAeJxjYGScwDiBgZWBgamLaQ+DIkMPiP7fw/iAwZCRCSjKwMrMAAOMQOwA4wSkuaYAKQUlG8YSsGQJXA0DACxLCh0AAAABGAAAAAAAAAFNAAAAAQAAAx8AOXicY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmBgUlGz+/wfywfT/x3dPQNUDASMbA5zDyAQkmBhQASPEiuEMACp9CVIAAAAAAAAAAAAAAAAAOHicY2BksGRoYHrKWMKgysDAKMKmrKSmrseorMTHzA5km5qYGRuJicsxGhvZMZsD2UxP4/z0/UyMPDX4FNQVxJmYePkxBBgD/JoMDHS12UWVrNUklJE5DADJcRG5eJytUstq20AUPaPYhkLxsqssLpRCApEQUjbOqsQkBhM5QYpLtuNYtoVtTZAUjHf9oLbf1E/p0WgotJSsqkH3nvt+zAAY4gcUuu/Lb6wwVB8d9jBQnx0+QaS+O9zDB2/ocB9Db+zwgPqv9FS9d5S+2agWK5yqvsMe3qvI4RMs1cThHi7UT4f7OPU+OTzAhZdiDIMXHFGhwBobNBBECHli+DwdHlG7oJfgGgHpFBrP2DL2gJq8oE6jxNLaAiTWa2btnWfrcUa5tJlyVtLYYUXJWPpI3RP5HBlukJIKJuT31DxQOmdGjM3LsSrWm0aiMIx9n3Qki6NcBzLVz1tzqLeF6HIp0yAJZGYOVBZyZkpZ5Bu9W4lZyWP+JPPsJs1kkt7PH7Jz5r1jwwkbathWxjH3bNGwvZqD4y5JdLPJjvuF2dWU26kqurT9Y2aqvSa/taM1lldcZG7XGHB1giv+b1XwOWbOmFfKmtFdRGQtsbuCCJcsYsrm1lTrXKIglCv5szM/zdevO13REI38mMuJLt8e7e/C+HfC9hHnNNe8xO4Cu8naJyI05lVdcMXsKYzl/1T8BT/ck9YAAAB4nGNgYmD4//Hb7v8TGNQYsAFWIGZkYGJgZmRiL87MzcxJLAIAALoIXwAAAAAAAAH//wACeJxjYGRgYOABYjEgZmJgBEIWMAbxGAADygAzAHicY2BgYGQAgtsKp6pB9CNd5g0wGgBBqgXGAAA=')format("woff");}.fff{font-family:fff;line-height:0.244000;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.914000;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;}
._3{margin-left:-7.355850px;}
._6{margin-left:-5.049862px;}
._7{margin-left:-3.787397px;}
._d{margin-left:-2.410162px;}
._8{margin-left:-1.291162px;}
._f{width:1.302286px;}
._0{width:3.073600px;}
._20{width:6.240614px;}
._16{width:12.302226px;}
._c{width:13.445534px;}
._e{width:14.541758px;}
._9{width:15.589581px;}
._10{width:16.928492px;}
._a{width:18.200582px;}
._15{width:19.387792px;}
._5{width:21.691454px;}
._14{width:22.909110px;}
._1e{width:24.390877px;}
._13{width:26.776883px;}
._4{width:31.159050px;}
._b{width:32.418280px;}
._17{width:33.855850px;}
._1{width:36.288314px;}
._1b{width:38.285018px;}
._2{width:40.911750px;}
._18{width:50.805739px;}
._1c{width:57.114458px;}
._1d{width:75.317760px;}
._11{width:84.654034px;}
._1a{width:101.584220px;}
._19{width:372.601943px;}
._12{width:440.347887px;}
._1f{width:802.088792px;}
._21{width:1053.922682px;}
.fc9{color:rgb(57,75,79);}
.fcb{color:rgb(186,33,33);}
.fc8{color:rgb(16,136,110);}
.fc7{color:rgb(176,0,64);}
.fc6{color:rgb(61,122,122);}
.fca{color:rgb(156,102,0);}
.fc4{color:rgb(0,0,255);}
.fc3{color:rgb(0,128,0);}
.fc5{color:rgb(102,102,102);}
.fc2{color:rgb(255,255,255);}
.fc1{color:rgb(250,250,250);}
.fc0{color:rgb(35,55,59);}
.fs5{font-size:31.880400px;}
.fs7{font-size:35.865600px;}
.fs4{font-size:39.850400px;}
.fs6{font-size:43.636400px;}
.fs3{font-size:47.820800px;}
.fs2{font-size:57.384800px;}
.fs1{font-size:82.650000px;}
.fs0{font-size:99.148400px;}
.y0{bottom:-0.500000px;}
.y8c{bottom:8.778000px;}
.ya6{bottom:10.911000px;}
.y3d{bottom:10.993000px;}
.y67{bottom:11.254000px;}
.y83{bottom:11.412000px;}
.ybf{bottom:12.552000px;}
.y11{bottom:13.018000px;}
.y1f{bottom:20.429000px;}
.y3c{bottom:21.877000px;}
.y48{bottom:22.521000px;}
.ya5{bottom:23.514000px;}
.y82{bottom:24.014000px;}
.y72{bottom:25.371000px;}
.ybe{bottom:28.134000px;}
.y1e{bottom:31.313000px;}
.y27{bottom:32.236000px;}
.y55{bottom:34.114000px;}
.y5e{bottom:35.814000px;}
.ya4{bottom:36.116000px;}
.y81{bottom:36.617000px;}
.y10{bottom:36.806000px;}
.y71{bottom:37.974000px;}
.y1d{bottom:42.197000px;}
.y6{bottom:42.285000px;}
.y3b{bottom:43.645000px;}
.y26{bottom:45.984000px;}
.y54{bottom:46.716000px;}
.ya3{bottom:48.719000px;}
.y80{bottom:49.220000px;}
.y5d{bottom:49.562000px;}
.y70{bottom:50.576000px;}
.y98{bottom:51.484000px;}
.y47{bottom:52.888000px;}
.y1c{bottom:53.081000px;}
.y66{bottom:54.293000px;}
.y3a{bottom:54.529000px;}
.y2f{bottom:54.627000px;}
.ybd{bottom:55.045000px;}
.yb2{bottom:56.001000px;}
.yf{bottom:56.009000px;}
.y5{bottom:58.960000px;}
.y53{bottom:59.319000px;}
.y25{bottom:59.732000px;}
.ya2{bottom:61.322000px;}
.y7f{bottom:61.822000px;}
.y6f{bottom:63.179000px;}
.y5c{bottom:63.747000px;}
.y1b{bottom:63.965000px;}
.y97{bottom:64.087000px;}
.y39{bottom:65.413000px;}
.y46{bottom:65.491000px;}
.ybc{bottom:67.648000px;}
.yb1{bottom:68.604000px;}
.y65{bottom:69.874000px;}
.y24{bottom:73.481000px;}
.ya1{bottom:73.924000px;}
.y7e{bottom:74.425000px;}
.y1a{bottom:74.849000px;}
.ye{bottom:75.212000px;}
.y96{bottom:76.689000px;}
.y45{bottom:78.094000px;}
.y2e{bottom:78.652000px;}
.ybb{bottom:80.250000px;}
.y8b{bottom:83.323000px;}
.y5b{bottom:84.310000px;}
.y52{bottom:84.524000px;}
.y64{bottom:85.456000px;}
.y19{bottom:85.734000px;}
.ya0{bottom:86.527000px;}
.y7d{bottom:87.028000px;}
.y38{bottom:87.182000px;}
.y6e{bottom:88.384000px;}
.y95{bottom:89.292000px;}
.y44{bottom:90.696000px;}
.yba{bottom:92.853000px;}
.yb0{bottom:93.809000px;}
.yd{bottom:94.415000px;}
.y8a{bottom:95.926000px;}
.y18{bottom:96.618000px;}
.y51{bottom:97.127000px;}
.y37{bottom:98.066000px;}
.y2d{bottom:98.446000px;}
.y5a{bottom:98.496000px;}
.y7c{bottom:99.630000px;}
.y6d{bottom:100.987000px;}
.y94{bottom:101.895000px;}
.y23{bottom:102.186000px;}
.y43{bottom:103.299000px;}
.yaf{bottom:106.412000px;}
.y89{bottom:108.529000px;}
.y50{bottom:109.730000px;}
.y9f{bottom:111.732000px;}
.y7b{bottom:112.233000px;}
.y6c{bottom:113.590000px;}
.yc{bottom:113.618000px;}
.y17{bottom:113.955000px;}
.y93{bottom:114.497000px;}
.y63{bottom:114.985000px;}
.y42{bottom:115.902000px;}
.y4{bottom:116.359000px;}
.yb9{bottom:118.058000px;}
.y2c{bottom:118.240000px;}
.yae{bottom:119.014000px;}
.y36{bottom:119.834000px;}
.y59{bottom:120.576000px;}
.y88{bottom:121.131000px;}
.y4f{bottom:122.332000px;}
.y9e{bottom:124.335000px;}
.y7a{bottom:124.836000px;}
.y6b{bottom:126.192000px;}
.y22{bottom:126.210000px;}
.y92{bottom:127.100000px;}
.y41{bottom:128.504000px;}
.y16{bottom:129.537000px;}
.y62{bottom:130.566000px;}
.yb8{bottom:130.661000px;}
.y35{bottom:130.718000px;}
.yad{bottom:131.617000px;}
.y4e{bottom:134.935000px;}
.y2b{bottom:136.810000px;}
.y9d{bottom:136.938000px;}
.y79{bottom:137.438000px;}
.y12{bottom:138.248000px;}
.y3{bottom:138.377000px;}
.y6a{bottom:138.795000px;}
.y91{bottom:139.703000px;}
.y40{bottom:141.107000px;}
.y34{bottom:141.602000px;}
.yb{bottom:141.611000px;}
.yb7{bottom:143.264000px;}
.yac{bottom:144.220000px;}
.y21{bottom:146.004000px;}
.y87{bottom:146.337000px;}
.y4d{bottom:147.538000px;}
.y9c{bottom:149.540000px;}
.y78{bottom:150.041000px;}
.y69{bottom:151.398000px;}
.y90{bottom:152.305000px;}
.y33{bottom:152.486000px;}
.y58{bottom:152.619000px;}
.y3f{bottom:153.710000px;}
.y2a{bottom:155.381000px;}
.yab{bottom:156.822000px;}
.y86{bottom:158.939000px;}
.y61{bottom:160.096000px;}
.y4c{bottom:160.140000px;}
.ya{bottom:160.814000px;}
.y9b{bottom:162.143000px;}
.y77{bottom:162.644000px;}
.y32{bottom:163.371000px;}
.y20{bottom:164.575000px;}
.y8f{bottom:164.908000px;}
.y15{bottom:166.044000px;}
.yb6{bottom:168.469000px;}
.y3e{bottom:168.554000px;}
.y57{bottom:168.856000px;}
.yaa{bottom:169.425000px;}
.y68{bottom:170.556000px;}
.y85{bottom:171.542000px;}
.y4b{bottom:172.743000px;}
.y31{bottom:174.255000px;}
.y29{bottom:174.424000px;}
.y9a{bottom:174.746000px;}
.y76{bottom:175.246000px;}
.y60{bottom:175.677000px;}
.y2{bottom:177.832000px;}
.y9{bottom:180.017000px;}
.yb5{bottom:181.072000px;}
.y14{bottom:181.626000px;}
.ya9{bottom:182.028000px;}
.y84{bottom:184.145000px;}
.y56{bottom:185.093000px;}
.y4a{bottom:185.346000px;}
.y8e{bottom:186.726000px;}
.y99{bottom:187.348000px;}
.y75{bottom:187.849000px;}
.y30{bottom:191.592000px;}
.yb4{bottom:193.674000px;}
.ya8{bottom:194.630000px;}
.y5f{bottom:197.211000px;}
.y1{bottom:198.454000px;}
.y8{bottom:199.220000px;}
.y49{bottom:200.190000px;}
.y74{bottom:200.452000px;}
.y8d{bottom:202.308000px;}
.y28{bottom:204.954000px;}
.yb3{bottom:206.277000px;}
.y13{bottom:207.174000px;}
.ya7{bottom:207.233000px;}
.y73{bottom:213.054000px;}
.y7{bottom:236.149000px;}
.ha{height:22.124998px;}
.h8{height:23.910300px;}
.hc{height:24.818995px;}
.hd{height:24.890726px;}
.he{height:26.899200px;}
.hb{height:27.656178px;}
.h6{height:29.887800px;}
.h9{height:32.727300px;}
.h5{height:33.187635px;}
.h7{height:35.865600px;}
.h4{height:43.038600px;}
.h3{height:61.987500px;}
.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;}
.x1{left:28.346000px;}
.xa{left:31.335000px;}
.x5{left:34.488000px;}
.x10{left:36.225000px;}
.x9{left:37.711000px;}
.xd{left:45.590000px;}
.xb{left:48.272000px;}
.x6{left:50.486000px;}
.x11{left:63.207000px;}
.xe{left:65.208000px;}
.xf{left:68.994000px;}
.x12{left:74.972000px;}
.xc{left:82.145000px;}
.x8{left:106.772000px;}
.x2{left:125.114000px;}
.x14{left:229.997000px;}
.x15{left:248.827000px;}
.x3{left:378.705000px;}
.x13{left:424.403000px;}
.x7{left:428.637000px;}
@media print{
.v0{vertical-align:0.000000pt;}
.ls0{letter-spacing:0.000000pt;}
.ws0{word-spacing:0.000000pt;}
._3{margin-left:-9.807800pt;}
._6{margin-left:-6.733150pt;}
._7{margin-left:-5.049862pt;}
._d{margin-left:-3.213549pt;}
._8{margin-left:-1.721549pt;}
._f{width:1.736382pt;}
._0{width:4.098134pt;}
._20{width:8.320819pt;}
._16{width:16.402968pt;}
._c{width:17.927378pt;}
._e{width:19.389011pt;}
._9{width:20.786108pt;}
._10{width:22.571323pt;}
._a{width:24.267443pt;}
._15{width:25.850389pt;}
._5{width:28.921939pt;}
._14{width:30.545480pt;}
._1e{width:32.521170pt;}
._13{width:35.702511pt;}
._4{width:41.545400pt;}
._b{width:43.224373pt;}
._17{width:45.141133pt;}
._1{width:48.384419pt;}
._1b{width:51.046690pt;}
._2{width:54.549000pt;}
._18{width:67.740985pt;}
._1c{width:76.152610pt;}
._1d{width:100.423680pt;}
._11{width:112.872046pt;}
._1a{width:135.445626pt;}
._19{width:496.802591pt;}
._12{width:587.130516pt;}
._1f{width:1069.451723pt;}
._21{width:1405.230243pt;}
.fs5{font-size:42.507200pt;}
.fs7{font-size:47.820800pt;}
.fs4{font-size:53.133867pt;}
.fs6{font-size:58.181867pt;}
.fs3{font-size:63.761067pt;}
.fs2{font-size:76.513067pt;}
.fs1{font-size:110.200000pt;}
.fs0{font-size:132.197867pt;}
.y0{bottom:-0.666667pt;}
.y8c{bottom:11.704000pt;}
.ya6{bottom:14.548000pt;}
.y3d{bottom:14.657333pt;}
.y67{bottom:15.005333pt;}
.y83{bottom:15.216000pt;}
.ybf{bottom:16.736000pt;}
.y11{bottom:17.357333pt;}
.y1f{bottom:27.238667pt;}
.y3c{bottom:29.169333pt;}
.y48{bottom:30.028000pt;}
.ya5{bottom:31.352000pt;}
.y82{bottom:32.018667pt;}
.y72{bottom:33.828000pt;}
.ybe{bottom:37.512000pt;}
.y1e{bottom:41.750667pt;}
.y27{bottom:42.981333pt;}
.y55{bottom:45.485333pt;}
.y5e{bottom:47.752000pt;}
.ya4{bottom:48.154667pt;}
.y81{bottom:48.822667pt;}
.y10{bottom:49.074667pt;}
.y71{bottom:50.632000pt;}
.y1d{bottom:56.262667pt;}
.y6{bottom:56.380000pt;}
.y3b{bottom:58.193333pt;}
.y26{bottom:61.312000pt;}
.y54{bottom:62.288000pt;}
.ya3{bottom:64.958667pt;}
.y80{bottom:65.626667pt;}
.y5d{bottom:66.082667pt;}
.y70{bottom:67.434667pt;}
.y98{bottom:68.645333pt;}
.y47{bottom:70.517333pt;}
.y1c{bottom:70.774667pt;}
.y66{bottom:72.390667pt;}
.y3a{bottom:72.705333pt;}
.y2f{bottom:72.836000pt;}
.ybd{bottom:73.393333pt;}
.yb2{bottom:74.668000pt;}
.yf{bottom:74.678667pt;}
.y5{bottom:78.613333pt;}
.y53{bottom:79.092000pt;}
.y25{bottom:79.642667pt;}
.ya2{bottom:81.762667pt;}
.y7f{bottom:82.429333pt;}
.y6f{bottom:84.238667pt;}
.y5c{bottom:84.996000pt;}
.y1b{bottom:85.286667pt;}
.y97{bottom:85.449333pt;}
.y39{bottom:87.217333pt;}
.y46{bottom:87.321333pt;}
.ybc{bottom:90.197333pt;}
.yb1{bottom:91.472000pt;}
.y65{bottom:93.165333pt;}
.y24{bottom:97.974667pt;}
.ya1{bottom:98.565333pt;}
.y7e{bottom:99.233333pt;}
.y1a{bottom:99.798667pt;}
.ye{bottom:100.282667pt;}
.y96{bottom:102.252000pt;}
.y45{bottom:104.125333pt;}
.y2e{bottom:104.869333pt;}
.ybb{bottom:107.000000pt;}
.y8b{bottom:111.097333pt;}
.y5b{bottom:112.413333pt;}
.y52{bottom:112.698667pt;}
.y64{bottom:113.941333pt;}
.y19{bottom:114.312000pt;}
.ya0{bottom:115.369333pt;}
.y7d{bottom:116.037333pt;}
.y38{bottom:116.242667pt;}
.y6e{bottom:117.845333pt;}
.y95{bottom:119.056000pt;}
.y44{bottom:120.928000pt;}
.yba{bottom:123.804000pt;}
.yb0{bottom:125.078667pt;}
.yd{bottom:125.886667pt;}
.y8a{bottom:127.901333pt;}
.y18{bottom:128.824000pt;}
.y51{bottom:129.502667pt;}
.y37{bottom:130.754667pt;}
.y2d{bottom:131.261333pt;}
.y5a{bottom:131.328000pt;}
.y7c{bottom:132.840000pt;}
.y6d{bottom:134.649333pt;}
.y94{bottom:135.860000pt;}
.y23{bottom:136.248000pt;}
.y43{bottom:137.732000pt;}
.yaf{bottom:141.882667pt;}
.y89{bottom:144.705333pt;}
.y50{bottom:146.306667pt;}
.y9f{bottom:148.976000pt;}
.y7b{bottom:149.644000pt;}
.y6c{bottom:151.453333pt;}
.yc{bottom:151.490667pt;}
.y17{bottom:151.940000pt;}
.y93{bottom:152.662667pt;}
.y63{bottom:153.313333pt;}
.y42{bottom:154.536000pt;}
.y4{bottom:155.145333pt;}
.yb9{bottom:157.410667pt;}
.y2c{bottom:157.653333pt;}
.yae{bottom:158.685333pt;}
.y36{bottom:159.778667pt;}
.y59{bottom:160.768000pt;}
.y88{bottom:161.508000pt;}
.y4f{bottom:163.109333pt;}
.y9e{bottom:165.780000pt;}
.y7a{bottom:166.448000pt;}
.y6b{bottom:168.256000pt;}
.y22{bottom:168.280000pt;}
.y92{bottom:169.466667pt;}
.y41{bottom:171.338667pt;}
.y16{bottom:172.716000pt;}
.y62{bottom:174.088000pt;}
.yb8{bottom:174.214667pt;}
.y35{bottom:174.290667pt;}
.yad{bottom:175.489333pt;}
.y4e{bottom:179.913333pt;}
.y2b{bottom:182.413333pt;}
.y9d{bottom:182.584000pt;}
.y79{bottom:183.250667pt;}
.y12{bottom:184.330667pt;}
.y3{bottom:184.502667pt;}
.y6a{bottom:185.060000pt;}
.y91{bottom:186.270667pt;}
.y40{bottom:188.142667pt;}
.y34{bottom:188.802667pt;}
.yb{bottom:188.814667pt;}
.yb7{bottom:191.018667pt;}
.yac{bottom:192.293333pt;}
.y21{bottom:194.672000pt;}
.y87{bottom:195.116000pt;}
.y4d{bottom:196.717333pt;}
.y9c{bottom:199.386667pt;}
.y78{bottom:200.054667pt;}
.y69{bottom:201.864000pt;}
.y90{bottom:203.073333pt;}
.y33{bottom:203.314667pt;}
.y58{bottom:203.492000pt;}
.y3f{bottom:204.946667pt;}
.y2a{bottom:207.174667pt;}
.yab{bottom:209.096000pt;}
.y86{bottom:211.918667pt;}
.y61{bottom:213.461333pt;}
.y4c{bottom:213.520000pt;}
.ya{bottom:214.418667pt;}
.y9b{bottom:216.190667pt;}
.y77{bottom:216.858667pt;}
.y32{bottom:217.828000pt;}
.y20{bottom:219.433333pt;}
.y8f{bottom:219.877333pt;}
.y15{bottom:221.392000pt;}
.yb6{bottom:224.625333pt;}
.y3e{bottom:224.738667pt;}
.y57{bottom:225.141333pt;}
.yaa{bottom:225.900000pt;}
.y68{bottom:227.408000pt;}
.y85{bottom:228.722667pt;}
.y4b{bottom:230.324000pt;}
.y31{bottom:232.340000pt;}
.y29{bottom:232.565333pt;}
.y9a{bottom:232.994667pt;}
.y76{bottom:233.661333pt;}
.y60{bottom:234.236000pt;}
.y2{bottom:237.109333pt;}
.y9{bottom:240.022667pt;}
.yb5{bottom:241.429333pt;}
.y14{bottom:242.168000pt;}
.ya9{bottom:242.704000pt;}
.y84{bottom:245.526667pt;}
.y56{bottom:246.790667pt;}
.y4a{bottom:247.128000pt;}
.y8e{bottom:248.968000pt;}
.y99{bottom:249.797333pt;}
.y75{bottom:250.465333pt;}
.y30{bottom:255.456000pt;}
.yb4{bottom:258.232000pt;}
.ya8{bottom:259.506667pt;}
.y5f{bottom:262.948000pt;}
.y1{bottom:264.605333pt;}
.y8{bottom:265.626667pt;}
.y49{bottom:266.920000pt;}
.y74{bottom:267.269333pt;}
.y8d{bottom:269.744000pt;}
.y28{bottom:273.272000pt;}
.yb3{bottom:275.036000pt;}
.y13{bottom:276.232000pt;}
.ya7{bottom:276.310667pt;}
.y73{bottom:284.072000pt;}
.y7{bottom:314.865333pt;}
.ha{height:29.499997pt;}
.h8{height:31.880400pt;}
.hc{height:33.091994pt;}
.hd{height:33.187635pt;}
.he{height:35.865600pt;}
.hb{height:36.874903pt;}
.h6{height:39.850400pt;}
.h9{height:43.636400pt;}
.h5{height:44.250180pt;}
.h7{height:47.820800pt;}
.h4{height:57.384800pt;}
.h3{height:82.650000pt;}
.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;}
.x1{left:37.794667pt;}
.xa{left:41.780000pt;}
.x5{left:45.984000pt;}
.x10{left:48.300000pt;}
.x9{left:50.281333pt;}
.xd{left:60.786667pt;}
.xb{left:64.362667pt;}
.x6{left:67.314667pt;}
.x11{left:84.276000pt;}
.xe{left:86.944000pt;}
.xf{left:91.992000pt;}
.x12{left:99.962667pt;}
.xc{left:109.526667pt;}
.x8{left:142.362667pt;}
.x2{left:166.818667pt;}
.x14{left:306.662667pt;}
.x15{left:331.769333pt;}
.x3{left:504.940000pt;}
.x13{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="#pf3" data-dest-detail='[3,"XYZ",28.346,255.118,null]'>C++ Idioms</a><ul><li><a class="l" href="#pf4" data-dest-detail='[4,"XYZ",28.346,228.21,null]'>Rule of Zero</a></li><li><a class="l" href="#pf5" data-dest-detail='[5,"XYZ",28.346,228.21,null]'>Rule of Three</a></li><li><a class="l" href="#pf6" data-dest-detail='[6,"XYZ",28.346,225.99,null]'>Rule of Five</a></li></ul></li><li><a class="l" href="#pf7" data-dest-detail='[7,"XYZ",28.346,255.118,null]'>Design Pattern</a><ul><li><a class="l" href="#pf8" data-dest-detail='[8,"XYZ",28.346,228.21,null]'>Singleton</a></li><li><a class="l" href="#pf9" data-dest-detail='[9,"XYZ",28.346,228.21,null]'>PIMPL</a></li><li><a class="l" href="#pfd" data-dest-detail='[13,"XYZ",28.346,228.21,null]'>Curiously Recurring Template Pattern</a></li><li><a class="l" href="#pf10" data-dest-detail='[16,"XYZ",28.346,223.344,null]'>Template Virtual Functions</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 x1 h3 y3 ff2 fs1 fc0 sc0 ls0 ws0">24.<span class="_ _2"> </span>Softw<span class="_ _3"></span>are<span class="_ _4"> </span>Design<span class="_ _4"> </span>I<span class="_ _0"></span>I<span class="_ _4"> </span>[DRAFT]</div><div class="t m0 x2 h4 y4 ff2 fs2 fc0 sc0 ls0 ws0">Design<span class="_ _5"> </span>P<span class="_ _6"></span>a<span class="_ _7"></span>tterns<span class="_ _5"> </span>and<span class="_ _5"> </span>Idioms</div><div class="t m0 x1 h5 y5 ff3 fs3 fc0 sc0 ls0 ws0">F<span class="_ _8"></span>ederico<span class="_ _9"> </span>Busato</div><div class="t m0 x3 h6 y6 ff4 fs4 fc0 sc0 ls0 ws0">2024-03-29</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 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _6"></span>able<span class="_ _a"> </span>of<span class="_ _a"> </span>Contents</div><div class="t m0 x5 h4 y8 ff1 fs4 fc2 sc0 ls0 ws0">1<span class="_ _b"> </span><span class="fs2 fc0">C++<span class="_ _5"> </span>Idioms</span></div><div class="t m0 x6 h6 y9 ff4 fs4 fc0 sc0 ls0 ws0">R<span class="_ _8"></span>ule<span class="_ _c"> </span>of<span class="_ _c"> </span>Zero</div><div class="t m0 x6 h6 ya ff4 fs4 fc0 sc0 ls0 ws0">R<span class="_ _8"></span>ule<span class="_ _c"> </span>of<span class="_ _c"> </span>Three</div><div class="t m0 x6 h6 yb ff4 fs4 fc0 sc0 ls0 ws0">R<span class="_ _8"></span>ule<span class="_ _c"> </span>of<span class="_ _c"> </span>Five</div><div class="t m0 x5 h4 yc ff1 fs4 fc2 sc0 ls0 ws0">2<span class="_ _b"> </span><span class="fs2 fc0">Design<span class="_ _5"> </span>P<span class="_ _d"></span>attern</span></div><div class="t m0 x6 h6 yd ff4 fs4 fc0 sc0 ls0 ws0">Singleton</div><div class="t m0 x6 h6 ye ff4 fs4 fc0 sc0 ls0 ws0">PIMPL</div><div class="t m0 x6 h6 yf ff4 fs4 fc0 sc0 ls0 ws0">Curiously<span class="_ _c"> </span>Recurring<span class="_ _c"> </span>T<span class="_ _7"></span>emplate<span class="_ _c"> </span>P<span class="_ _8"></span>attern</div><div class="t m0 x6 h6 y10 ff4 fs4 fc0 sc0 ls0 ws0">T<span class="_ _7"></span>emplate<span class="_ _c"> </span>Virtual<span class="_ _c"> </span>Functions</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">1/15</div><a class="l" href="#pf3" data-dest-detail='[3,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:47.076000px;bottom:196.397000px;width:84.716000px;height:13.782000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf4" data-dest-detail='[4,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:179.021000px;width:53.673000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><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:49.490000px;bottom:159.818000px;width:58.959000px;height:8.911000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf6" data-dest-detail='[6,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:140.615000px;width:51.847000px;height:8.911000px;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:47.076000px;bottom:109.832000px;width:101.132000px;height:14.745000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf8" data-dest-detail='[8,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:91.482000px;width:40.570000px;height:10.848000px;background-color:rgba(255,255,255,0.000001);"></div></a><a class="l" href="#pf9" data-dest-detail='[9,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:49.490000px;bottom:74.216000px;width:31.604000px;height:8.911000px;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:53.076000px;width:159.610000px;height:10.848000px;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:33.873000px;width:115.650000px;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="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 x8 h2 y12 ff1 fs0 fc0 sc0 ls0 ws0">C++<span class="_ _1"> </span>Idioms</div><a class="l" href="#pf3" data-dest-detail='[3,"XYZ",27.346,256.118,null]'><div class="d m1" style="border-style:none;position:absolute;left:105.775000px;bottom:134.352000px;width:144.921000px;height:22.106000px;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 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">R<span class="_ _d"></span>ule<span class="_ _a"> </span>of<span class="_ _a"> </span>Zero</div><div class="t m0 x1 h9 y13 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span><span class="ff1">R<span class="_ _8"></span>ule<span class="_ _9"> </span>of<span class="_ _9"> </span>Zero<span class="_ _e"> </span><span class="ff4">is<span class="_ _e"> </span>a<span class="_ _e"> </span>rule<span class="_ _e"> </span>of<span class="_ _e"> </span>thumb<span class="_ _e"> </span>for<span class="_ _c"> </span>C++</span></span></div><div class="t m0 x9 h9 y14 ff4 fs6 fc0 sc0 ls0 ws0">Utilize<span class="_ _e"> </span>the<span class="_ _e"> </span><span class="ff6">value<span class="_ _e"> </span>semantics<span class="_ _a"> </span></span>of<span class="_ _c"> </span>existing<span class="_ _e"> </span>types<span class="_ _e"> </span>to<span class="_ _e"> </span>avoid<span class="_ _e"> </span>having<span class="_ _e"> </span>to<span class="_ _e"> </span>implement<span class="_ _e"> </span><span class="ff6">custom</span></div><div class="t m0 x9 h9 y15 ff4 fs6 fc0 sc0 ls0 ws0">cop<span class="_ _8"></span>y<span class="_ _e"> </span>and<span class="_ _e"> </span>move<span class="_ _e"> </span>op<span class="_ _f"></span>erations</div><div class="t m0 x1 h9 y16 ff1 fs6 fc0 sc0 ls0 ws0">Note:<span class="_ _a"> </span><span class="ff4">many<span class="_ _e"> </span>classes<span class="_ _c"> </span>(such<span class="_ _c"> </span>as<span class="_ _e"> </span><span class="ff7">std<span class="_ _c"> </span></span>classes)<span class="_ _c"> </span>manage<span class="_ _e"> </span>resources<span class="_ _c"> </span>themselves<span class="_ _c"> </span>and<span class="_ _c"> </span>should<span class="_ _e"> </span>not</span></div><div class="t m0 x1 h9 y17 ff4 fs6 fc0 sc0 ls0 ws0">implement<span class="_ _e"> </span>cop<span class="_ _8"></span>y/move<span class="_ _e"> </span>constructo<span class="_ _8"></span>r<span class="_ _e"> </span>and<span class="_ _e"> </span>assignment<span class="_ _e"> </span>op<span class="_ _f"></span>erato<span class="_ _8"></span>r</div><div class="t m0 xa ha y18 ff7 fs5 fc3 sc0 ls0 ws0">class<span class="_ _10"> </span><span class="fc4">X<span class="_ _10"> </span><span class="ff8 fc0">{</span></span></div><div class="t m0 xa ha y19 ff7 fs5 fc3 sc0 ls0 ws0">public<span class="ff8 fc5">:</span></div><div class="t m0 xb ha y1a ff8 fs5 fc0 sc0 ls0 ws0">X(...);<span class="_ _10"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>constructor</span></div><div class="t m0 xc ha y1b ff9 fs5 fc6 sc0 ls0 ws0">//<span class="_ _10"> </span>NO<span class="_ _9"> </span>need<span class="_ _10"> </span>to<span class="_ _10"> </span>define<span class="_ _10"> </span>copy/move<span class="_ _10"> </span>semantic</div><div class="t m0 xa ha y1c ff7 fs5 fc3 sc0 ls0 ws0">private<span class="ff8 fc5">:</span></div><div class="t m0 xb ha y1d ff8 fs5 fc0 sc0 ls0 ws0">std<span class="fc5">::</span>vector<span class="fc5">&lt;<span class="ff7 fc7">int</span>&gt;<span class="_ _11"> </span></span>v;<span class="_ _10"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>instead<span class="_ _9"> </span>raw<span class="_ _10"> </span>allocation</span></div><div class="t m0 xb ha y1e ff8 fs5 fc0 sc0 ls0 ws0">std<span class="fc5">::</span>unique_ptr<span class="fc5">&lt;<span class="ff7 fc7">int</span>&gt;<span class="_ _10"> </span></span>p;<span class="_ _10"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>instead<span class="_ _9"> </span>raw<span class="_ _10"> </span>allocation</span></div><div class="t m0 xa ha y1f ff8 fs5 fc0 sc0 ls0 ws0">};<span class="_ _12"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>see<span class="_ _9"> </span>smart<span class="_ _10"> </span>pointer</span></div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">2/15</div></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 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">R<span class="_ _d"></span>ule<span class="_ _a"> </span>of<span class="_ _10"> </span>Three</div><div class="t m0 x1 h9 y13 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span><span class="ff1">R<span class="_ _8"></span>ule<span class="_ _9"> </span>of<span class="_ _9"> </span>Three<span class="_ _e"> </span><span class="ff4">is<span class="_ _e"> </span>a<span class="_ _e"> </span>rule<span class="_ _e"> </span>of<span class="_ _e"> </span>thumb<span class="_ _e"> </span>for<span class="_ _c"> </span>C++(03)</span></span></div><div class="t m0 x9 h9 y14 ff4 fs6 fc0 sc0 ls0 ws0">If<span class="_ _e"> </span>y<span class="_ _8"></span>our<span class="_ _e"> </span>class<span class="_ _e"> </span>needs<span class="_ _e"> </span>any<span class="_ _e"> </span>of</div><div class="t m0 xd h9 y20 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">a<span class="_ _e"> </span>cop<span class="_ _8"></span>y<span class="_ _e"> </span>constructo<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X(const<span class="_ _14"> </span>X&amp;)</span></span></div><div class="t m0 xd h9 y21 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">an<span class="_ _e"> </span>assignment<span class="_ _e"> </span>op<span class="_ _f"></span>erato<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X&amp;<span class="_ _14"> </span>operator=(const<span class="_ _14"> </span>X&amp;)</span></span></div><div class="t m0 xd h9 y22 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">o<span class="_ _8"></span>r<span class="_ _e"> </span>a<span class="_ _e"> </span>destructo<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ffb"><span class="ff7">X()</span></span></span></div><div class="t m0 x9 h9 y23 ff4 fs6 fc0 sc0 ls0 ws0">defined<span class="_ _e"> </span>explicitly<span class="_ _7"></span>,<span class="_ _e"> </span>then<span class="_ _e"> </span>it<span class="_ _e"> </span>is<span class="_ _e"> </span>lik<span class="_ _8"></span>ely<span class="_ _e"> </span>to<span class="_ _e"> </span>need<span class="_ _e"> </span>all<span class="_ _e"> </span>three<span class="_ _e"> </span>of<span class="_ _e"> </span>them</div><div class="t m0 x1 h9 y24 ff4 fs6 fc0 sc0 ls0 ws0">Some<span class="_ _e"> </span>resources<span class="_ _e"> </span>cannot<span class="_ _e"> </span>o<span class="_ _8"></span>r<span class="_ _e"> </span>should<span class="_ _e"> </span>not<span class="_ _e"> </span>b<span class="_ _f"></span>e<span class="_ _e"> </span>copied.<span class="_ _15"> </span>In<span class="_ _e"> </span>this<span class="_ _e"> </span>case,<span class="_ _e"> </span>they<span class="_ _e"> </span>should<span class="_ _e"> </span>b<span class="_ _f"></span>e<span class="_ _c"> </span>declared</div><div class="t m0 x1 h9 y25 ff4 fs6 fc0 sc0 ls0 ws0">as<span class="_ _e"> </span>deleted</div><div class="t m0 xa hb y26 ffc fs4 fc0 sc0 ls0 ws0">X(const<span class="_ _5"> </span>X&amp;)<span class="_ _15"> </span>=<span class="_ _5"> </span>delete</div><div class="t m0 xa hb y27 ffc fs4 fc0 sc0 ls0 ws0">X&amp;<span class="_ _5"> </span>operator=(const<span class="_ _15"> </span>X&amp;)<span class="_ _5"> </span>=<span class="_ _5"> </span>delete</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">3/15</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pf6" class="pf w0 h0" data-page-no="6"><div class="pc pc6 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">R<span class="_ _d"></span>ule<span class="_ _a"> </span>of<span class="_ _10"> </span>Five</div><div class="t m0 x1 h9 y28 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span><span class="ff1">R<span class="_ _8"></span>ule<span class="_ _9"> </span>of<span class="_ _9"> </span>Five<span class="_ _e"> </span><span class="ff4">is<span class="_ _e"> </span>a<span class="_ _e"> </span>rule<span class="_ _e"> </span>of<span class="_ _e"> </span>thumb<span class="_ _e"> </span>for<span class="_ _c"> </span><span class="fc8">C++11</span></span></span></div><div class="t m0 x9 h9 y29 ff4 fs6 fc0 sc0 ls0 ws0">If<span class="_ _e"> </span>y<span class="_ _8"></span>our<span class="_ _e"> </span>class<span class="_ _e"> </span>needs<span class="_ _e"> </span>any<span class="_ _e"> </span>of</div><div class="t m0 xd h9 y2a ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">a<span class="_ _e"> </span>cop<span class="_ _8"></span>y<span class="_ _e"> </span>constructo<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X(const<span class="_ _14"> </span>X&amp;)</span></span></div><div class="t m0 xd h9 y2b ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">a<span class="_ _e"> </span>move<span class="_ _e"> </span>constructo<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X(X&amp;&amp;)</span></span></div><div class="t m0 xd h9 y2c ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">an<span class="_ _e"> </span>assignment<span class="_ _e"> </span>op<span class="_ _f"></span>erato<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X&amp;<span class="_ _14"> </span>operator=(const<span class="_ _14"> </span>X&amp;)</span></span></div><div class="t m0 xd h9 y2d ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">an<span class="_ _e"> </span>assignment<span class="_ _e"> </span>op<span class="_ _f"></span>erato<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ff7">X&amp;<span class="_ _14"> </span>operator=(X&amp;&amp;)</span></span></div><div class="t m0 xd h9 y2e ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">o<span class="_ _8"></span>r<span class="_ _e"> </span>a<span class="_ _e"> </span>destructo<span class="_ _8"></span>r<span class="_ _13"> </span><span class="ffb"><span class="ff7">X()</span></span></span></div><div class="t m0 x9 h9 y2f ff4 fs6 fc0 sc0 ls0 ws0">defined<span class="_ _e"> </span>explicitly<span class="_ _7"></span>,<span class="_ _e"> </span>then<span class="_ _e"> </span>it<span class="_ _e"> </span>is<span class="_ _e"> </span>lik<span class="_ _8"></span>ely<span class="_ _e"> </span>to<span class="_ _e"> </span>need<span class="_ _e"> </span>all<span class="_ _e"> </span>five<span class="_ _e"> </span>of<span class="_ _e"> </span>them</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">4/15</div></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 x8 h2 y12 ff1 fs0 fc0 sc0 ls0 ws0">Design<span class="_ _1"> </span>P<span class="_ _7"></span>attern</div><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:105.775000px;bottom:132.432000px;width:173.285000px;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="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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4YtcsDqcQaycQMRauM1cwnEsHMINrI6rTBMLwd5r/APPM0H40rz8aXc4dQAAEMbjfltZAQCAaEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAABfqZRiBQAA4sg5u6QCABCOSAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAAMv0Db11nmcfBgCwzDAMDb3WJRUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJFqAgAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQBoUyqlWAEAgDhyzi6pAACEI1IBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQDgR/102VoB/u55vhoBAD72xzGlzbpOr66rtRoEAIAQ3h16GgJyQCZjAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Singleton</div><div class="t m0 x1 h9 y13 ff1 fs6 fc0 sc0 ls0 ws0">Singleton<span class="_ _e"> </span><span class="ff4">is<span class="_ _e"> </span>a<span class="_ _e"> </span>soft<span class="_ _8"></span>w<span class="_ _8"></span>a<span class="_ _8"></span>re<span class="_ _e"> </span>design<span class="_ _e"> </span>pattern<span class="_ _e"> </span>that<span class="_ _e"> </span>restricts<span class="_ _e"> </span>the<span class="_ _e"> </span>instantiation<span class="_ _e"> </span>of<span class="_ _e"> </span>a<span class="_ _e"> </span>class<span class="_ _e"> </span>to<span class="_ _e"> </span>one</span></div><div class="t m0 x1 h9 y30 ff4 fs6 fc0 sc0 ls0 ws0">and<span class="_ _e"> </span>only<span class="_ _e"> </span>one<span class="_ _e"> </span>object<span class="_ _e"> </span>(<span class="ffd fs7">a<span class="_ _16"> </span>common<span class="_ _16"> </span>application<span class="_ _16"> </span>is<span class="_ _16"> </span>fo<span class="_ _8"></span>r<span class="_ _16"> </span>logging<span class="ff4 fs6">)</span></span></div><div class="t m0 xa ha y31 ff7 fs5 fc3 sc0 ls0 ws0">class<span class="_ _10"> </span><span class="fc4">Singleton<span class="_ _10"> </span><span class="ff8 fc0">{</span></span></div><div class="t m0 xa ha y32 ff7 fs5 fc3 sc0 ls0 ws0">public<span class="ff8 fc5">:</span></div><div class="t m0 xb ha y33 ff7 fs5 fc3 sc0 ls0 ws0">static<span class="_ _10"> </span><span class="ff8 fc0">Singleton<span class="fc5">&amp;<span class="_ _10"> </span></span>get_instance()<span class="_ _10"> </span>{<span class="_ _17"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>note<span class="_ _9"> </span>&quot;static&quot;</span></span></div><div class="t m0 xe ha y34 ff7 fs5 fc3 sc0 ls0 ws0">static<span class="_ _10"> </span><span class="ff8 fc0">Singleton<span class="_ _10"> </span>instance<span class="_ _10"> </span>{<span class="_ _10"> </span>..init..<span class="_ _10"> </span>}<span class="_ _10"> </span>;</span></div><div class="t m0 xe ha y35 ff7 fs5 fc3 sc0 ls0 ws0">return<span class="_ _10"> </span><span class="ff8 fc0">instance;<span class="_ _18"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>destroyed<span class="_ _9"> </span>at<span class="_ _10"> </span>the<span class="_ _10"> </span>end<span class="_ _10"> </span>of<span class="_ _10"> </span>the<span class="_ _10"> </span>program</span></span></div><div class="t m0 xb ha y36 ff8 fs5 fc0 sc0 ls0 ws0">}<span class="_ _19"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>initiliazed<span class="_ _9"> </span>at<span class="_ _10"> </span>first<span class="_ _10"> </span>use</span></div><div class="t m0 xb ha y37 ff8 fs5 fc0 sc0 ls0 ws0">Singleton(<span class="ff7 fc3">const</span><span class="fc5">&amp;<span class="_ _10"> </span></span>Singleton)<span class="_ _1a"> </span><span class="fc5">=<span class="_ _10"> </span><span class="ff7 fc3">delete</span></span>;</div><div class="t m0 xb ha y38 ff7 fs5 fc7 sc0 ls0 ws0">void<span class="_ _10"> </span><span class="fc3">operator<span class="ff8 fc5">=<span class="fc0">(</span></span>const<span class="ff8 fc5">&amp;<span class="_ _10"> </span><span class="fc0">Singleton)<span class="_ _10"> </span></span>=<span class="_ _10"> </span></span>delete<span class="ff8 fc0">;</span></span></div><div class="t m0 xb ha y39 ff7 fs5 fc7 sc0 ls0 ws0">void<span class="_ _10"> </span><span class="ff8 fc4">f<span class="fc0">()<span class="_ _10"> </span>{}</span></span></div><div class="t m0 xa ha y3a ff7 fs5 fc3 sc0 ls0 ws0">private<span class="ff8 fc5">:</span></div><div class="t m0 xb ha y3b ff8 fs5 fc0 sc0 ls0 ws0">T<span class="_ _10"> </span>_data;</div><div class="t m0 xb ha y3c ff8 fs5 fc0 sc0 ls0 ws0">Singleton(<span class="_ _10"> </span>..args..<span class="_ _10"> </span>)<span class="_ _10"> </span>{<span class="_ _10"> </span>...<span class="_ _10"> </span>}<span class="_ _17"> </span><span class="ff9 fc6">//<span class="_ _10"> </span>used<span class="_ _9"> </span>in<span class="_ _10"> </span>the<span class="_ _10"> </span>initialization</span></div><div class="t m0 xa ha y3d ff8 fs5 fc0 sc0 ls0 ws0">}</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">5/15</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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIuElEQVR42u3ZsUkEQRiG4RvZH6PBGsToKhARAwPB0F6uCKPrwCLswEADOzCxA6NjIv9kzcxEbjlwBp+nguHbDV5mytn55QoAALrx/vpyZAUAAHojUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAA+FYy0woAAPQjItykAgDQHZEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgDAr6aBztpa88EAAJaptQ50WjepAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVBMAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAABwKJMJ+D/utlsj9ONxszECAD8pmTnKWVtrPhgAwDK11lGOGhGe+wEA6I5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAAD2UjLTCgAA9CMi3KQCANAdkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQDg70yjHHR9dT3ivm/PT34yAIB9lcy0AgAA/YgIz/0AAHRHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAABDmXb3p1YAlvm4eTACAAe3vrgt5eR43n2uVvM8GwQAgC58AZlmKP5JHc9sAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">PIMPL<span class="_ _10"> </span>-<span class="_ _a"> </span>Compilation<span class="_ _10"> </span>Firewalls</div><div class="t m0 x1 h9 y13 ff1 fs6 fc0 sc0 ls0 ws0">P<span class="_ _8"></span>ointer<span class="_ _9"> </span>to<span class="_ _9"> </span>IMPLementation<span class="_ _10"> </span>(PIMPL)<span class="_ _c"> </span><span class="ff4">idiom<span class="_ _e"> </span>allows<span class="_ _c"> </span>decoupling<span class="_ _e"> </span>the<span class="_ _e"> </span>interface<span class="_ _e"> </span>from</span></div><div class="t m0 x1 h9 y30 ff4 fs6 fc0 sc0 ls0 ws0">the<span class="_ _e"> </span>implementation<span class="_ _e"> </span>in<span class="_ _e"> </span>a<span class="_ _e"> </span>clea<span class="_ _8"></span>r<span class="_ _e"> </span>w<span class="_ _8"></span>a<span class="_ _8"></span>y</div><div class="t m0 x1 hc y3e ff7 fs7 fc0 sc0 ls0 ws0">header.hpp</div><div class="t m0 xa hd y3f ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">A<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 xa hd y40 ff7 fs7 fc3 sc0 ls0 ws0">public<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y41 ffe fs7 fc0 sc0 ls0 ws0">A();</div><div class="t m0 x6 hd y42 fff fs7 fc0 sc0 ls0 ws0"><span class="ffe">A();</span></div><div class="t m0 x6 hd y43 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">f<span class="fc0">();</span></span></div><div class="t m0 xa hd y44 ff7 fs7 fc3 sc0 ls0 ws0">private<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y45 ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">Impl<span class="ffe fc0">;<span class="_ _1b"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>forward<span class="_ _15"> </span>declaration</span></span></span></div><div class="t m0 x6 hd y46 ffe fs7 fc0 sc0 ls0 ws0">Impl<span class="fc5">*<span class="_ _a"> </span></span>ptr;<span class="_ _1c"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>opaque<span class="_ _15"> </span>pointer</span></div><div class="t m0 xa hd y47 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x1 h9 y48 ff4 fs6 fc0 sc0 ls0 ws0">NOTE:<span class="_ _e"> </span>The<span class="_ _e"> </span>class<span class="_ _e"> </span>do<span class="_ _f"></span>es<span class="_ _e"> </span>not<span class="_ _e"> </span>exp<span class="_ _f"></span>ose<span class="_ _c"> </span>internal<span class="_ _e"> </span>data<span class="_ _e"> </span>memb<span class="_ _f"></span>ers<span class="_ _e"> </span>or<span class="_ _c"> </span>metho<span class="_ _f"></span>ds</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">6/15</div></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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIdklEQVR42u3YsQkCMRiG4UQuWAVnECsnELEW3MwlHMfCIdzA6rjKNLFzABv/455ngvClefnz7nBKAAAQxvNxX1kBAIBoRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAAF+5tWYFAADiKKW4pAIAEI5IBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAwX8OM3jpNkw8DAPhNrXVGr3VJBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApJoAAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAIB/ya01KwAAEEcpxSUVAIBwRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAMCCDON1awVgOV7nmxEAgtsfLzlv1n18p9R7NwgAACF8ADmCGgKgKI3VAAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">PIMPL<span class="_ _10"> </span>-<span class="_ _a"> </span>Implementation</div><div class="t m0 x1 he y49 ff7 fs7 fc0 sc0 ls0 ws0">source.cpp<span class="_ _16"> </span><span class="ffd">(<span class="ffe">Impl<span class="_ _16"> </span></span>actual<span class="_ _16"> </span>implementation)</span></div><div class="t m0 xa hd y4a ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">A<span class="ffe fc5">::<span class="fc0">Impl<span class="_ _15"> </span>{<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>could<span class="_ _a"> </span>be<span class="_ _15"> </span>a<span class="_ _a"> </span>class<span class="_ _15"> </span>with<span class="_ _a"> </span>a<span class="_ _15"> </span>complex<span class="_ _a"> </span>logic</span></span></span></span></div><div class="t m0 xa hd y4b ff7 fs7 fc3 sc0 ls0 ws0">public<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y4c ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">internal_f()<span class="_ _15"> </span>{</span></div><div class="t m0 xf hd y4d ffe fs7 fc0 sc0 ls0 ws0">..<span class="ff7 fc3">do<span class="_ _a"> </span></span>something..</div><div class="t m0 x6 hd y4e ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y4f ff7 fs7 fc3 sc0 ls0 ws0">private<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y50 ff7 fs7 fc7 sc0 ls0 ws0">int<span class="_ _1c"> </span><span class="ffe fc0">_data1;</span></div><div class="t m0 x6 hd y51 ff7 fs7 fc7 sc0 ls0 ws0">float<span class="_ _a"> </span><span class="ffe fc0">_data2;</span></div><div class="t m0 xa hd y52 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd y53 ffe fs7 fc0 sc0 ls0 ws0">A<span class="fc5">::</span>A()<span class="_ _1d"> </span><span class="fc5">:<span class="_ _a"> </span></span>ptr{<span class="ff7 fc3">new<span class="_ _15"> </span></span>Impl()}<span class="_ _a"> </span>{}</div><div class="t m0 xa hd y54 ffe fs7 fc0 sc0 ls0 ws0">A<span class="fc5">::</span><span class="fff"></span>A()<span class="_ _1d"> </span>{<span class="_ _a"> </span><span class="ff7 fc3">delete<span class="_ _15"> </span></span>ptr;<span class="_ _a"> </span>}</div><div class="t m0 xa hd y55 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">A<span class="fc5">::</span>f()<span class="_ _15"> </span>{<span class="_ _a"> </span>ptr<span class="fc5">-&gt;</span>internal_f();<span class="_ _15"> </span>}</span></div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">7/15</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 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">PIMPL<span class="_ _10"> </span>-<span class="_ _a"> </span>A<span class="_ _d"></span>dvantages,<span class="_ _a"> </span>Disadvantages</div><div class="t m0 x1 h9 y13 ff1 fs6 fc0 sc0 ls0 ws0">A<span class="_ _8"></span>dvantages<span class="ff4">:</span></div><div class="t m0 x10 h9 y56 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">ABI<span class="_ _e"> </span>stabilit<span class="_ _8"></span>y</span></div><div class="t m0 x10 h9 y57 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">Hide<span class="_ _e"> </span>p<span class="_ _8"></span>rivate<span class="_ _e"> </span>data<span class="_ _e"> </span>memb<span class="_ _f"></span>ers<span class="_ _e"> </span>and<span class="_ _e"> </span>metho<span class="_ _f"></span>ds</span></div><div class="t m0 x10 h9 y58 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">Reduce<span class="_ _e"> </span>compile<span class="_ _e"> </span>t<span class="_ _8"></span>yp<span class="_ _f"></span>e<span class="_ _e"> </span>and<span class="_ _e"> </span>dep<span class="_ _f"></span>endencies</span></div><div class="t m0 x1 h9 y59 ff1 fs6 fc0 sc0 ls0 ws0">Disadvantages<span class="ff4">:</span></div><div class="t m0 x10 h9 y5a ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">Manual<span class="_ _e"> </span>resource<span class="_ _e"> </span>management</span></div><div class="t m0 x11 h6 y5b ff4 fs4 fc0 sc0 ls0 ws0">-<span class="_ _17"> </span><span class="ffc">Impl*<span class="_ _5"> </span>ptr<span class="_ _1e"> </span></span>can<span class="_ _16"> </span>b<span class="_ _f"></span>e<span class="_ _c"> </span>replaced<span class="_ _c"> </span>by<span class="_ _1e"> </span><span class="ffc">unique<span class="_ _e"> </span>ptr&lt;impl&gt;<span class="_ _5"> </span>ptr<span class="_ _1e"> </span></span>in<span class="_ _c"> </span><span class="fc8">C++11</span></div><div class="t m0 x10 h9 y5c ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff4">P<span class="_ _8"></span>erfo<span class="_ _8"></span>rmance:<span class="_ _15"> </span>p<span class="_ _f"></span>ointer<span class="_ _e"> </span>indirection<span class="_ _e"> </span>+<span class="_ _e"> </span>dynamic<span class="_ _e"> </span>memo<span class="_ _8"></span>ry</span></div><div class="t m0 x11 h6 y5d ff4 fs4 fc0 sc0 ls0 ws0">-<span class="_ _5"> </span>dynamic<span class="_ _c"> </span>memo<span class="_ _8"></span>ry<span class="_ _c"> </span>could<span class="_ _16"> </span>b<span class="_ _f"></span>e<span class="_ _c"> </span>avoided<span class="_ _c"> </span>by<span class="_ _16"> </span>using<span class="_ _c"> </span>a<span class="_ _c"> </span>reserved<span class="_ _16"> </span>space<span class="_ _c"> </span>in<span class="_ _c"> </span>the<span class="_ _c"> </span>interface<span class="_ _c"> </span>e.g.</div><div class="t m0 x12 hb y5e ffc fs4 fc0 sc0 ls0 ws0">uint8<span class="_ _e"> </span>t<span class="_ _5"> </span>data[1024]</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">8/15</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,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"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">PIMPL<span class="_ _10"> </span>-<span class="_ _a"> </span>Implementation<span class="_ _10"> </span>Alternatives</div><div class="t m0 x1 h9 y5f ff4 fs6 fc0 sc0 ls0 ws0">What<span class="_ _e"> </span>pa<span class="_ _8"></span>rts<span class="_ _e"> </span>of<span class="_ _e"> </span>the<span class="_ _e"> </span>class<span class="_ _e"> </span>should<span class="_ _e"> </span>go<span class="_ _e"> </span>into<span class="_ _e"> </span>the<span class="_ _13"> </span><span class="ffc">Impl<span class="_ _13"> </span></span>object?</div><div class="t m0 x10 h9 y60 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff6">Put<span class="_ _e"> </span>all<span class="_ _e"> </span>p<span class="_ _8"></span>rivate<span class="_ _e"> </span>and<span class="_ _e"> </span>protecte<span class="_ _8"></span>d<span class="_ _e"> </span>memb<span class="_ _f"></span>ers<span class="_ _e"> </span>into<span class="_ _13"> </span><span class="ff9">Impl<span class="_ _16"> </span><span class="ff4">:</span></span></span></div><div class="t m0 x6 h9 y61 ff1 fs6 fc0 sc0 ls0 ws0">Erro<span class="_ _8"></span>r<span class="_ _9"> </span>prone<span class="ff4">.<span class="_ _a"> </span>Inheritance<span class="_ _e"> </span>is<span class="_ _e"> </span>hard<span class="_ _c"> </span>fo<span class="_ _8"></span>r<span class="_ _e"> </span>opaque<span class="_ _e"> </span>objects</span></div><div class="t m0 x10 h9 y62 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff6">Put<span class="_ _e"> </span>all<span class="_ _e"> </span>p<span class="_ _8"></span>rivate<span class="_ _e"> </span>memb<span class="_ _f"></span>ers<span class="_ _e"> </span>(but<span class="_ _e"> </span>not<span class="_ _e"> </span>functions)<span class="_ _e"> </span>into<span class="_ _13"> </span><span class="ff9">Impl<span class="_ _16"> </span><span class="ff4">:</span></span></span></div><div class="t m0 x6 h9 y63 ff1 fs6 fc0 sc0 ls0 ws0">Go<span class="_ _f"></span>o<span class="_ _f"></span>d<span class="ff4">.<span class="_ _15"> </span>Do<span class="_ _e"> </span>w<span class="_ _8"></span>e<span class="_ _e"> </span>need<span class="_ _e"> </span>to<span class="_ _e"> </span>exp<span class="_ _f"></span>ose<span class="_ _e"> </span>all<span class="_ _e"> </span>functions?</span></div><div class="t m0 x10 h9 y64 ffa fs6 fc0 sc0 ls0 ws0"><span class="_ _5"> </span><span class="ff6">Put<span class="_ _e"> </span>everything<span class="_ _e"> </span>into<span class="_ _13"> </span><span class="ff9">Impl<span class="_ _16"> </span></span>,<span class="_ _c"> </span>and<span class="_ _e"> </span>write<span class="_ _e"> </span>the<span class="_ _e"> </span>public<span class="_ _e"> </span>class<span class="_ _e"> </span>itself<span class="_ _e"> </span>as<span class="_ _e"> </span>only<span class="_ _e"> </span>the<span class="_ _e"> </span>public</span></div><div class="t m0 x6 h9 y65 ff6 fs6 fc0 sc0 ls0 ws0">interface,<span class="_ _e"> </span>each<span class="_ _e"> </span>implemented<span class="_ _e"> </span>as<span class="_ _e"> </span>a<span class="_ _e"> </span>simple<span class="_ _e"> </span>fo<span class="_ _8"></span>rw<span class="_ _8"></span>a<span class="_ _8"></span>rding<span class="_ _e"> </span>function<span class="ff4">:</span></div><div class="t m0 x6 h9 y66 ff1 fs6 fc0 sc0 ls0 ws0">Go<span class="_ _f"></span>o<span class="_ _f"></span>d</div><div class="t m0 x10 hd y67 ffe fs7 fc9 sc0 ls0 ws0">https://herbsutter.com/gotw/<span class="_ _c"> </span>100/</div><div class="t m0 x7 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">9/15</div><a class="l" href="https://herbsutter.com/gotw/_100/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:6.477000px;width:156.017000px;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="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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAItklEQVR42u3ZMUpDQRCA4ay8wWrxDGLlCUSsBUvvkkNY5QYewkNYeAhvYBW2cpqXQkhhGcHM431fmSIMsxB+Ju3m7mEDAABlfH68X9gCAADViFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAI5aZtoCAAB1RIRLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAgH80LWjWMcbfv6T37tUB/DIDxbmkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAIDzaplpCwAA1BERLqkAAJQjUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAFZkWtCsYwwPBgBwmt77gqZ1SQUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKRaAQAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABWarKCFXre7X598rbdWgsAUEfLzKXMOsbwYAAAp+m9L2XUiPB3PwAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACOWmbaAgAAdUSESyoAAOWIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBgVab9y7UtAMCPr8dXS4Czu71/au3qct5/bzbzPFsIAAAlHADFiyv+xQQZcQAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Curiously<span class="_ _10"> </span>Recurring<span class="_ _a"> </span>T<span class="_ _6"></span>emplate<span class="_ _a"> </span>P<span class="_ _d"></span>attern<span class="_ _1f"> </span>1/3</div><div class="t m0 x1 h9 y13 ff4 fs6 fc0 sc0 ls0 ws0">The<span class="_ _e"> </span><span class="ff1">Curiously<span class="_ _9"> </span>Recurring<span class="_ _9"> </span>T<span class="_ _7"></span>emplate<span class="_ _10"> </span>P<span class="_ _d"></span>attern<span class="_ _10"> </span>(CRTP)<span class="_ _c"> </span><span class="ff4">is<span class="_ _e"> </span>an<span class="_ _e"> </span>idiom<span class="_ _e"> </span>in<span class="_ _e"> </span>which<span class="_ _e"> </span>a<span class="_ _e"> </span>class</span></span></div><div class="t m0 xa h9 y30 ffc fs6 fc0 sc0 ls0 ws0">X<span class="_ _13"> </span><span class="ff4">derives<span class="_ _c"> </span>from<span class="_ _e"> </span>a<span class="_ _e"> </span>class<span class="_ _e"> </span>template<span class="_ _e"> </span>instantiation<span class="_ _e"> </span>using<span class="_ _13"> </span></span>X<span class="_ _13"> </span><span class="ff4">itself<span class="_ _e"> </span>as<span class="_ _e"> </span>template<span class="_ _e"> </span>argument</span></div><div class="t m0 x1 h9 y68 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _e"> </span>common<span class="_ _e"> </span>application<span class="_ _e"> </span>is<span class="_ _e"> </span><span class="ff6">static<span class="_ _e"> </span>p<span class="_ _f"></span>olymo<span class="_ _8"></span>rphism</span></div><div class="t m0 xa hd y69 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="_ _a"> </span><span class="ffe fc5">&lt;</span>class<span class="_ _15"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 xa hd y6a ff7 fs7 fc3 sc0 ls0 ws0">struct<span class="_ _a"> </span><span class="fc4">Base<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 x6 hd y6b ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">my_method<span class="fc0">()<span class="_ _15"> </span>{</span></span></div><div class="t m0 xf hd y6c ff7 fs7 fc3 sc0 ls0 ws0">static_cast<span class="ffe fc5">&lt;<span class="fc0">T</span>*&gt;<span class="fc0">(</span></span>this<span class="ffe fc0">)<span class="fc5">-&gt;</span>my_method_impl();</span></div><div class="t m0 x6 hd y6d ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y6e ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd y6f ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">Derived<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Base<span class="fc5">&lt;</span>Derived<span class="fc5">&gt;<span class="_ _a"> </span></span>{</span></div><div class="t m0 xa hd y70 ff9 fs7 fc6 sc0 ls0 ws0">//<span class="_ _1b"> </span><span class="ff10">void<span class="_ _a"> </span>my<span class="_ _c"> </span>method()<span class="_ _a"> </span>is<span class="_ _15"> </span>inherited</span></div><div class="t m0 x6 hd y71 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">my_method_impl<span class="fc0">()<span class="_ _15"> </span>{<span class="_ _a"> </span>...<span class="_ _15"> </span>}<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>private<span class="_ _a"> </span>method</span></span></span></div><div class="t m0 xa hd y72 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">10/15</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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAId0lEQVR42u3YsQlCMRSG0UResArOIFZOIGItuJlLOI6FQ7iB1eNVpomdpYUg3CfnTBD+NB83b3aHBAAAYdxv14UVAACIRqQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAPCWW2tWAAAgjlKKSyoAAOGIVAAARCoAAIhUAABEKgAAiFQAAEQqAAD82jCjt07T5MMAAL5Ta53Ra11SAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqSYAAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSTQAAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAPggt9asAABAHKUUl1QAAMIRqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAiG4Yz2srAMB8PY4XI/BntvtTzqtlH58p9d4NAgBACC+S1BoCkWWv0gAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Curiously<span class="_ _10"> </span>Recurring<span class="_ _a"> </span>T<span class="_ _6"></span>emplate<span class="_ _a"> </span>P<span class="_ _d"></span>attern<span class="_ _1f"> </span>2/3</div><div class="t m0 xa hd y73 ff9 fs7 fca sc0 ls0 ws0">#<span class="_ _20"> </span>include<span class="_ _1e"> </span><span class="fc6">&lt;iostream&gt;</span></div><div class="t m0 xa hd y74 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="_ _a"> </span><span class="ffe fc5">&lt;</span>typename<span class="_ _15"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 xa hd y75 ff7 fs7 fc3 sc0 ls0 ws0">struct<span class="_ _a"> </span><span class="fc4">Writer<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 x6 hd y76 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">write<span class="fc0">(</span></span><span class="fc3">const<span class="_ _15"> </span></span>char<span class="ffe fc5">*<span class="_ _a"> </span><span class="fc0">str)<span class="_ _15"> </span>{</span></span></div><div class="t m0 xf hd y77 ff7 fs7 fc3 sc0 ls0 ws0">static_cast<span class="ffe fc5">&lt;</span>const<span class="_ _a"> </span><span class="ffe fc0">T<span class="fc5">*&gt;</span>(</span>this<span class="ffe fc0">)<span class="fc5">-&gt;</span>write_impl(str);</span></div><div class="t m0 x6 hd y78 ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y79 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd y7a ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">CerrWriter<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Writer<span class="fc5">&lt;</span>CerrWriter<span class="fc5">&gt;<span class="_ _a"> </span></span>{</span></div><div class="t m0 x6 hd y7b ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">write_impl<span class="fc0">(</span></span><span class="fc3">const<span class="_ _15"> </span></span>char<span class="ffe fc5">*<span class="_ _a"> </span><span class="fc0">str)<span class="_ _15"> </span>{<span class="_ _1b"> </span>std</span>::<span class="fc0">cerr<span class="_ _a"> </span></span>&lt;&lt;<span class="_ _a"> </span><span class="fc0">str;<span class="_ _1b"> </span>}</span></span></div><div class="t m0 xa hd y7c ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd y7d ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">CoutWriter<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Writer<span class="fc5">&lt;</span>CoutWriter<span class="fc5">&gt;<span class="_ _a"> </span></span>{</span></div><div class="t m0 x6 hd y7e ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc4">write_impl<span class="fc0">(</span></span><span class="fc3">const<span class="_ _15"> </span></span>char<span class="ffe fc5">*<span class="_ _a"> </span><span class="fc0">str)<span class="_ _15"> </span>{<span class="_ _1b"> </span>std</span>::<span class="fc0">cout<span class="_ _a"> </span></span>&lt;&lt;<span class="_ _a"> </span><span class="fc0">str;<span class="_ _1b"> </span>}</span></span></div><div class="t m0 xa hd y7f ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd y80 ffe fs7 fc0 sc0 ls0 ws0">CoutWriter<span class="_ _a"> </span>x;</div><div class="t m0 xa hd y81 ffe fs7 fc0 sc0 ls0 ws0">CerrWriter<span class="_ _a"> </span>y;</div><div class="t m0 xa hd y82 ffe fs7 fc0 sc0 ls0 ws0">x.write(<span class="fcb">&quot;abc&quot;</span>);</div><div class="t m0 xa hd y83 ffe fs7 fc0 sc0 ls0 ws0">y.write(<span class="fcb">&quot;abc&quot;</span>);</div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">11/15</div></div><div class="pi" data-data='{"ctm":[1.000000,0.000000,0.000000,1.000000,0.000000,0.000000]}'></div></div>
<div id="pff" class="pf w0 h0" data-page-no="f"><div class="pc pcf w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAImklEQVR42u3ZMUoDQRTH4R3Zh9WSM4iVJxCxFnKFFDmPl/AGFp4hYOEhvIFV2MLkNWtnFwgp5A1+3wmG/zQ/Ztrt/eMAAABlfH68X1kBAIBqRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAAL9aZloBAIA6IsJLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAA/9fY0VnneXZhAACXmaapo9N6SQUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKSaAAAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAADhHy0wrAABQR0R4SQUAoByRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCANCBsZeDfh8O683WhUFfdm+vRgDgAi0zrQAAQB0R4bsfAIByRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgDQlXH/fGMFAOCPfT29GIFT7h7Wra2ul/1xGJZlMQgAACX8APetIwDV9C72AAAAAElFTkSuQmCC"/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">Curiously<span class="_ _10"> </span>Recurring<span class="_ _a"> </span>T<span class="_ _6"></span>emplate<span class="_ _a"> </span>P<span class="_ _d"></span>attern<span class="_ _1f"> </span>3/3</div><div class="t m0 xa hd y84 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="_ _a"> </span><span class="ffe fc5">&lt;</span>typename<span class="_ _15"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 xa hd y85 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">f(Writer<span class="fc5">&lt;</span>T<span class="fc5">&gt;&amp;<span class="_ _15"> </span></span>writer)<span class="_ _a"> </span>{</span></div><div class="t m0 x6 hd y86 ffe fs7 fc0 sc0 ls0 ws0">writer.write(<span class="fcb">&quot;abc);</span></div><div class="t m0 xa hd y87 ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y88 ffe fs7 fc0 sc0 ls0 ws0">CoutWriter<span class="_ _a"> </span>x;</div><div class="t m0 xa hd y89 ffe fs7 fc0 sc0 ls0 ws0">CerrWriter<span class="_ _a"> </span>y;</div><div class="t m0 xa hd y8a ffe fs7 fc0 sc0 ls0 ws0">f(x);</div><div class="t m0 xa hd y8b ffe fs7 fc0 sc0 ls0 ws0">f(y);</div><div class="t m0 x10 hd y8c ffe fs7 fc9 sc0 ls0 ws0">CRTP<span class="_ _a"> </span>C++<span class="_ _15"> </span>Examples</div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">12/15</div><a class="l" href="http://www.vishalchovatiya.com/crtp-c-examples/"><div class="d m1" style="border-style:none;position:absolute;left:34.722000px;bottom:4.001000px;width:82.018000px;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="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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAId0lEQVR42u3YuwkCQRSG0RnZwWixBjGyAhFjwc5swnIMLMIOjJaNnGTMTH0EclfOqWD4J/m4ebXZJQAACON6Oc+sAABANCIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAICnXGu1AgAAcZRSXFIBAAhHpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAf6Gb0FvHcfRhAADf6ft+Qq91SQUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKSaAAAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgDAx3Kt1QoAAMRRSnFJBQAgHJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAvKUbjksrAAC8dNufjPAb6+0h58W8DfeUWmsGAQAghAd5rRoCpM3chgAAAABJRU5ErkJggg=="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _6"></span>emplate<span class="_ _a"> </span>Virtual<span class="_ _10"> </span>Function<span class="_ _21"> </span>1/3</div><div class="t m0 x1 h9 y8d ff1 fs6 fc0 sc0 ls0 ws0">Virtual<span class="_ _9"> </span>functions<span class="_ _9"> </span>cannot<span class="_ _10"> </span>have<span class="_ _9"> </span>template<span class="_ _9"> </span>arguments<span class="ff4">,<span class="_ _c"> </span>but<span class="_ _e"> </span>they<span class="_ _e"> </span>can<span class="_ _e"> </span>b<span class="_ _f"></span>e<span class="_ _e"> </span>emulated<span class="_ _e"> </span>by</span></div><div class="t m0 x1 h9 y8e ff4 fs6 fc0 sc0 ls0 ws0">using<span class="_ _e"> </span>the<span class="_ _e"> </span>follo<span class="_ _8"></span>wing<span class="_ _e"> </span>pattern</div><div class="t m0 xa hd y8f ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">Base<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 xa hd y90 ff7 fs7 fc3 sc0 ls0 ws0">public<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y91 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="ffe fc5">&lt;</span>typename<span class="_ _a"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 x6 hd y92 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">method(T<span class="_ _15"> </span>t)<span class="_ _a"> </span>{</span></div><div class="t m0 xf hd y93 ffe fs7 fc0 sc0 ls0 ws0">v_method(t);<span class="_ _1d"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>call<span class="_ _15"> </span>the<span class="_ _a"> </span>actual<span class="_ _15"> </span>implementation</span></div><div class="t m0 x6 hd y94 ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y95 ff7 fs7 fc3 sc0 ls0 ws0">protected<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y96 ff7 fs7 fc3 sc0 ls0 ws0">virtual<span class="_ _a"> </span><span class="fc7">void<span class="_ _15"> </span><span class="ffe fc0">v_method(</span>int<span class="_ _a"> </span><span class="ffe fc0">t)<span class="_ _1d"> </span><span class="fc5">=<span class="_ _15"> </span>0</span>;<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>v_method<span class="_ _a"> </span>is<span class="_ _15"> </span>valid<span class="_ _a"> </span>only</span></span></span></div><div class="t m0 x6 hd y97 ff7 fs7 fc3 sc0 ls0 ws0">virtual<span class="_ _a"> </span><span class="fc7">void<span class="_ _15"> </span><span class="ffe fc4">v_method<span class="fc0">(</span></span>double<span class="_ _a"> </span><span class="ffe fc0">t)<span class="_ _15"> </span><span class="fc5">=<span class="_ _a"> </span>0</span>;<span class="_ _15"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>for<span class="_ _15"> </span>&quot;int&quot;<span class="_ _a"> </span>and<span class="_ _15"> </span>&quot;double&quot;</span></span></span></div><div class="t m0 xa hd y98 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">13/15</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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAIkElEQVR42u3YsU0DQRBA0Vt0I0crakBEVGBZjpHojCYoxwFF0AGRtRGTHAGSC7CRPGe/V8Bpbjb5mva83U8AAFDG1+fhwRYAAKhGpAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAcNIy0xYAAKgjIlxSAQAoR6QCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAODezVYA8GeMcflHeu9+CuByLqkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEA4LpaZtoCAAB1RIRLKgAA5YhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAD4Z/OKZh1jeDAAgPP03lc0rUsqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAi1QoAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAATC0zbQEAgDoiwiUVAIByRCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAKqbj+9PtgAAcKu+Xz9WN/PL7q21x81y/JmmZVk8IgAAJfwCeesjAHNWcecAAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _6"></span>emplate<span class="_ _a"> </span>Virtual<span class="_ _10"> </span>Function<span class="_ _21"> </span>2/3</div><div class="t m0 x1 h9 y13 ff4 fs6 fc0 sc0 ls0 ws0">A<span class="_ _8"></span>ctual<span class="_ _e"> </span>implementations<span class="_ _e"> </span>fo<span class="_ _8"></span>r<span class="_ _e"> </span>derived<span class="_ _e"> </span>class<span class="_ _13"> </span><span class="ffc">A<span class="_ _13"> </span></span>and<span class="_ _13"> </span><span class="ffc">B</span></div><div class="t m0 xa hd y99 ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">AImpl<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Base<span class="_ _a"> </span>{</span></div><div class="t m0 xa hd y9a ff7 fs7 fc3 sc0 ls0 ws0">protected<span class="ffe fc5">:</span></div><div class="t m0 x6 hd y9b ff7 fs7 fc3 sc0 ls0 ws0">template<span class="ffe fc5">&lt;</span>typename<span class="_ _a"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 x6 hd y9c ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">t_method(T<span class="_ _15"> </span>t)<span class="_ _a"> </span>{<span class="_ _15"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>template<span class="_ _15"> </span>&quot;method()&quot;<span class="_ _a"> </span>implementation<span class="_ _15"> </span>for<span class="_ _a"> </span>A</span></span></div><div class="t m0 xf hd y9d ffe fs7 fc0 sc0 ls0 ws0">std<span class="fc5">::</span>cout<span class="_ _a"> </span><span class="fc5">&lt;&lt;<span class="_ _15"> </span><span class="fcb">&quot;A<span class="_ _a"> </span>&quot;<span class="_ _15"> </span></span>&lt;&lt;<span class="_ _a"> </span></span>t<span class="_ _15"> </span><span class="fc5">&lt;&lt;<span class="_ _a"> </span></span>std<span class="fc5">::</span>endl;</div><div class="t m0 x6 hd y9e ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd y9f ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd ya0 ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">BImpl<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Base<span class="_ _a"> </span>{</span></div><div class="t m0 xa hd ya1 ff7 fs7 fc3 sc0 ls0 ws0">protected<span class="ffe fc5">:</span></div><div class="t m0 x6 hd ya2 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="ffe fc5">&lt;</span>typename<span class="_ _a"> </span><span class="fc4">T<span class="ffe fc5">&gt;</span></span></div><div class="t m0 x6 hd ya3 ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">t_method(T<span class="_ _15"> </span>t)<span class="_ _a"> </span>{<span class="_ _15"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>template<span class="_ _15"> </span>&quot;method()&quot;<span class="_ _a"> </span>implementation<span class="_ _15"> </span>for<span class="_ _a"> </span>B</span></span></div><div class="t m0 xf hd ya4 ffe fs7 fc0 sc0 ls0 ws0">std<span class="fc5">::</span>cout<span class="_ _a"> </span><span class="fc5">&lt;&lt;<span class="_ _15"> </span><span class="fcb">&quot;B<span class="_ _a"> </span>&quot;<span class="_ _15"> </span></span>&lt;&lt;<span class="_ _a"> </span></span>t<span class="_ _15"> </span><span class="fc5">&lt;&lt;<span class="_ _a"> </span></span>std<span class="fc5">::</span>endl;</div><div class="t m0 x6 hd ya5 ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa hd ya6 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">14/15</div></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,iVBORw0KGgoAAAANSUhEUgAAA4wAAAH/CAIAAACTgcSzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAJCElEQVR42u3cMU4CQRSAYdbsRCwmNl7AeActLOgtLCg4jq33oeAEFoYzWHoBMgXrNNhZYGJiIvhm+b5yq+XNZPNnFuhu7u4nAAAQxtvry5kpAAAQjUgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAOBLV2s1BQAA4kgpOUkFACAckQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAftY3dK+lFAsGxJFz9pgC2npMNcRJKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAItUIAAAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAQKQCACBSAQBApAIAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAACIVAAAEKkAAIhUAAAQqQAAiFQAABCpAACIVAAAEKkAACBSAQAQqQAAIFIBABCpAAAgUgEAEKkAACBSAQAQqQAAIFIBAECkAgAgUgEAQKQCACBSAQBApAIAIFIBAECkAgCASAUAQKQCAIBIBQBApAIAgEgFAECkAgCASAUAQKQCAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAAAQqQAAiFQAABCpAACIVAAAOJSu1moKAADEkVJykgoAQDgiFQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAAE5M39C9llIs2G/lnC0rbW0JAJg4SQUAIKDeCACIqa03LV5TwN9ykgoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAgEgFAACRCgAAIhUAAJEKAAAiFQAAkQoAACIVAACRCgAAIhUAAJEKAADB9EZAi7bDMJsv9i6uV0uTAQCRCv/mYjqVpAAwYl73AwAgUgEAQKQCACBSAQBApAIAMDp+3Q9AUDlnQ4CT5SQVAIBwulqrKQAAEEdKyUkqAADhtPSd1FKKBTum+N8GsyVsCQDGykkqAAAiFQAARCoAACIVAABEKgAAIhUAAEQqAAAiFQAARCoAAIhUAABEKgAAiFQAAEQqAACIVAAARCoAAIhUAABEKgAAiFQAABCpAAA0ph/9J9wOw2y+2Lu4Xi2t/cm6fXj8ftGWAIBQulprK/daSrFgx5RztiVoa0sAMA4pJa/7AQAIR6QCACBSAQBApAIAIFIBAECkAgAgUgEA4NBa+p9UAABOgf9JBQAgIpEKAIBIBQAAkQoAgEgFAACRCgCASAUAAJEKAIBIBQAAkQoAACIVAACRCgAAIhUAAJEKAAAiFQCAses3z9emAABAHFdP7113eb7bfEwmu93OQAAACOETQVpLdosS1R0AAAAASUVORK5CYII="/><div class="t m0 x4 h7 y7 ff1 fs3 fc1 sc0 ls0 ws0">T<span class="_ _6"></span>emplate<span class="_ _a"> </span>Virtual<span class="_ _10"> </span>Function<span class="_ _21"> </span>3/3</div><div class="t m0 xa hd ya7 ff7 fs7 fc3 sc0 ls0 ws0">template<span class="ffe fc5">&lt;</span>class<span class="_ _a"> </span><span class="fc4">Impl<span class="ffe fc5">&gt;</span></span></div><div class="t m0 xa hd ya8 ff7 fs7 fc3 sc0 ls0 ws0">class<span class="_ _a"> </span><span class="fc4">DerivedWrapper<span class="_ _15"> </span><span class="ffe fc5">:<span class="_ _a"> </span></span></span>public<span class="_ _15"> </span><span class="ffe fc0">Impl<span class="_ _a"> </span>{</span></div><div class="t m0 xa hd ya9 ff7 fs7 fc3 sc0 ls0 ws0">private<span class="ffe fc5">:</span></div><div class="t m0 x6 hd yaa ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">v_method(</span>int<span class="_ _15"> </span><span class="ffe fc0">t)<span class="_ _a"> </span></span><span class="fc3">override<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 xf hd yab ffe fs7 fc0 sc0 ls0 ws0">Impl<span class="fc5">::</span>t_method(t);</div><div class="t m0 x6 hd yac ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 x6 hd yad ff7 fs7 fc7 sc0 ls0 ws0">void<span class="_ _a"> </span><span class="ffe fc0">v_method(</span>double<span class="_ _15"> </span><span class="ffe fc0">t)<span class="_ _a"> </span></span><span class="fc3">override<span class="_ _15"> </span><span class="ffe fc0">{</span></span></div><div class="t m0 xf hd yae ffe fs7 fc0 sc0 ls0 ws0">Impl<span class="fc5">::</span>t_method(t);</div><div class="t m0 x6 hd yaf ffe fs7 fc0 sc0 ls0 ws0">}<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>call<span class="_ _a"> </span>the<span class="_ _15"> </span>base<span class="_ _a"> </span>method</span></div><div class="t m0 xa hd yb0 ffe fs7 fc0 sc0 ls0 ws0">};</div><div class="t m0 xa hd yb1 ff7 fs7 fc3 sc0 ls0 ws0">using<span class="_ _a"> </span><span class="ffe fc0">A<span class="_ _15"> </span><span class="fc5">=<span class="_ _a"> </span></span>DerivedWrapper<span class="fc5">&lt;</span>AImpl<span class="fc5">&gt;</span>;</span></div><div class="t m0 xa hd yb2 ff7 fs7 fc3 sc0 ls0 ws0">using<span class="_ _a"> </span><span class="ffe fc0">B<span class="_ _15"> </span><span class="fc5">=<span class="_ _a"> </span></span>DerivedWrapper<span class="fc5">&lt;</span>BImpl<span class="fc5">&gt;</span>;</span></div><div class="t m0 x14 hd yb3 ff7 fs7 fc7 sc0 ls0 ws0">int<span class="_ _a"> </span><span class="ffe fc4">main<span class="fc0">(</span></span>int<span class="_ _15"> </span><span class="ffe fc0">argc,<span class="_ _a"> </span></span>char<span class="ffe fc5">*<span class="_ _15"> </span><span class="fc0">argv[])<span class="_ _a"> </span>{</span></span></div><div class="t m0 x15 hd yb4 ffe fs7 fc0 sc0 ls0 ws0">A<span class="_ _a"> </span>a;</div><div class="t m0 x15 hd yb5 ffe fs7 fc0 sc0 ls0 ws0">B<span class="_ _a"> </span>b;</div><div class="t m0 x15 hd yb6 ffe fs7 fc0 sc0 ls0 ws0">Base<span class="fc5">*<span class="_ _a"> </span></span>base<span class="_ _15"> </span><span class="fc5">=<span class="_ _a"> </span><span class="ff7 fc3">nullptr</span></span>;</div><div class="t m0 x15 hd yb7 ffe fs7 fc0 sc0 ls0 ws0">base<span class="_ _a"> </span><span class="fc5">=<span class="_ _15"> </span>&amp;</span>a;</div><div class="t m0 x15 hd yb8 ffe fs7 fc0 sc0 ls0 ws0">base<span class="fc5">-&gt;</span>method(<span class="fc5">1</span>);<span class="_ _1c"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>print<span class="_ _a"> </span>&quot;A<span class="_ _15"> </span>1&quot;</span></div><div class="t m0 x15 hd yb9 ffe fs7 fc0 sc0 ls0 ws0">base<span class="fc5">-&gt;</span>method(<span class="fc5">2.0</span>);<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>print<span class="_ _a"> </span>&quot;A<span class="_ _15"> </span>2.0&quot;</span></div><div class="t m0 x15 hd yba ffe fs7 fc0 sc0 ls0 ws0">base<span class="_ _a"> </span><span class="fc5">=<span class="_ _15"> </span>&amp;</span>b;</div><div class="t m0 x15 hd ybb ffe fs7 fc0 sc0 ls0 ws0">base<span class="fc5">-&gt;</span>method(<span class="fc5">1</span>);<span class="_ _1c"> </span><span class="ff9 fc6">//<span class="_ _a"> </span>print<span class="_ _a"> </span>&quot;B<span class="_ _15"> </span>1&quot;</span></div><div class="t m0 x15 hd ybc ffe fs7 fc0 sc0 ls0 ws0">base<span class="fc5">-&gt;</span>method(<span class="fc5">2.0</span>);<span class="_ _a"> </span><span class="ff9 fc6">//<span class="_ _15"> </span>print<span class="_ _a"> </span>&quot;B<span class="_ _15"> </span>2.0&quot;</span></div><div class="t m0 x14 hd ybd ffe fs7 fc0 sc0 ls0 ws0">}</div><div class="t m0 xa h9 ybe ff7 fs6 fc0 sc0 ls0 ws0">method()<span class="_ _13"> </span><span class="ff4">calls<span class="_ _13"> </span></span>v<span class="_ _9"> </span>method()<span class="_ _13"> </span><span class="ff4">(pure<span class="_ _e"> </span>virtual<span class="_ _e"> </span>metho<span class="_ _f"></span>d<span class="_ _e"> </span>of<span class="_ _13"> </span><span class="ffc">Base<span class="_ _16"> </span></span>)</span></div><div class="t m0 xa h9 ybf ff7 fs6 fc0 sc0 ls0 ws0">v<span class="_ _9"> </span>method()<span class="_ _13"> </span><span class="ff4">calls<span class="_ _13"> </span></span>t<span class="_ _10"> </span>method()<span class="_ _13"> </span><span class="ff4">(actual<span class="_ _c"> </span>implementation)</span></div><div class="t m0 x13 h8 y11 ff5 fs5 fc0 sc0 ls0 ws0">15/15</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>