CINXE.COM
Posts - Fluent C++
<!DOCTYPE html> <html lang="en-US"> <head> <meta property="og:type" content="article"/> <meta property="og:url" content="https://www.fluentcpp.com/posts/"/> <meta name="twitter:card" content="summary_large_image"/> <meta property="og:site_name" content="Fluent C++"/> <meta property="og:title" content="Posts"/> <meta name="twitter:title" content="Posts"/> <meta property="og:description" content="Expressive code in C++"/> <meta name="twitter:description" content="Expressive code in C++"/> <meta name="twitter:creator" content="@JoBoccara"/> <meta name="twitter:site" content="@JoBoccara"/> <!--[if IE]><link rel="stylesheet" type="text/css" href="https://www.fluentcpp.com/wp-content/themes/voice/css/ie.css"/><![endif]--> <!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="https://www.fluentcpp.com/wp-content/themes/voice/css/ie8.css"/><![endif]--> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta charset="UTF-8"> <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'/> <title>Posts - Fluent C++</title> <meta name="description" content="Here are all the posts published or planned on Fluent C++. I'm adding more, but let me know how I can enlarge this list with something super useful to you."/> <link rel="canonical" href="https://www.fluentcpp.com/posts/"/> <meta property="og:locale" content="en_US"/> <meta property="og:type" content="article"/> <meta property="og:title" content="Posts - Fluent C++"/> <meta property="og:description" content="Here are all the posts published or planned on Fluent C++. I'm adding more, but let me know how I can enlarge this list with something super useful to you."/> <meta property="og:url" content="https://www.fluentcpp.com/posts/"/> <meta property="og:site_name" content="Fluent C++"/> <meta property="article:modified_time" content="2019-05-08T12:06:34+00:00"/> <meta property="og:image" content="https://www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:site" content="@JoBoccara"/> <meta name="twitter:label1" content="Est. reading time"/> <meta name="twitter:data1" content="12 minutes"/> <link rel='dns-prefetch' href='//stats.wp.com'/> <link rel='dns-prefetch' href='//i0.wp.com'/> <style id='wp-emoji-styles-inline-css'>img.wp-smiley, img.emoji{display:inline !important;border:none !important;box-shadow:none !important;height:1em !important;width:1em !important;margin:0 0.07em !important;vertical-align:-0.1em !important;background:none !important;padding:0 !important;}</style> <link rel="stylesheet" type="text/css" href="//www.fluentcpp.com/wp-content/cache/wpfc-minified/g1lc2aas/9ubxy.css" media="all"/> <style id='wp-block-library-inline-css'>.has-text-align-justify{text-align:justify;}</style> <link rel="stylesheet" type="text/css" href="//www.fluentcpp.com/wp-content/cache/wpfc-minified/9mjvj4wb/9ubxy.css" media="all"/> <style id='jetpack-sharing-buttons-style-inline-css'>.jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0} .jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px} .jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px} .jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px} .jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px} @media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0} ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em}</style> <style id='classic-theme-styles-inline-css'>.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em} .wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}</style> <style id='global-styles-inline-css'>body{--wp--preset--color--black:#000000;--wp--preset--color--cyan-bluish-gray:#abb8c3;--wp--preset--color--white:#ffffff;--wp--preset--color--pale-pink:#f78da7;--wp--preset--color--vivid-red:#cf2e2e;--wp--preset--color--luminous-vivid-orange:#ff6900;--wp--preset--color--luminous-vivid-amber:#fcb900;--wp--preset--color--light-green-cyan:#7bdcb5;--wp--preset--color--vivid-green-cyan:#00d084;--wp--preset--color--pale-cyan-blue:#8ed1fc;--wp--preset--color--vivid-cyan-blue:#0693e3;--wp--preset--color--vivid-purple:#9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple:linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan:linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange:linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red:linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray:linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum:linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple:linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux:linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk:linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean:linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass:linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight:linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small:13px;--wp--preset--font-size--medium:20px;--wp--preset--font-size--large:36px;--wp--preset--font-size--x-large:42px;--wp--preset--spacing--20:0.44rem;--wp--preset--spacing--30:0.67rem;--wp--preset--spacing--40:1rem;--wp--preset--spacing--50:1.5rem;--wp--preset--spacing--60:2.25rem;--wp--preset--spacing--70:3.38rem;--wp--preset--spacing--80:5.06rem;--wp--preset--shadow--natural:6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep:12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp:6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined:6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp:6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap:0.5em;}:where(.is-layout-grid){gap:0.5em;} body .is-layout-flex{display:flex;} body .is-layout-flex{flex-wrap:wrap;align-items:center;} body .is-layout-flex > *{margin:0;} body .is-layout-grid{display:grid;} body .is-layout-grid > *{margin:0;}:where(.wp-block-columns.is-layout-flex){gap:2em;}:where(.wp-block-columns.is-layout-grid){gap:2em;}:where(.wp-block-post-template.is-layout-flex){gap:1.25em;}:where(.wp-block-post-template.is-layout-grid){gap:1.25em;} .has-black-color{color:var(--wp--preset--color--black) !important;} .has-cyan-bluish-gray-color{color:var(--wp--preset--color--cyan-bluish-gray) !important;} .has-white-color{color:var(--wp--preset--color--white) !important;} .has-pale-pink-color{color:var(--wp--preset--color--pale-pink) !important;} .has-vivid-red-color{color:var(--wp--preset--color--vivid-red) !important;} .has-luminous-vivid-orange-color{color:var(--wp--preset--color--luminous-vivid-orange) !important;} .has-luminous-vivid-amber-color{color:var(--wp--preset--color--luminous-vivid-amber) !important;} .has-light-green-cyan-color{color:var(--wp--preset--color--light-green-cyan) !important;} .has-vivid-green-cyan-color{color:var(--wp--preset--color--vivid-green-cyan) !important;} .has-pale-cyan-blue-color{color:var(--wp--preset--color--pale-cyan-blue) !important;} .has-vivid-cyan-blue-color{color:var(--wp--preset--color--vivid-cyan-blue) !important;} .has-vivid-purple-color{color:var(--wp--preset--color--vivid-purple) !important;} .has-black-background-color{background-color:var(--wp--preset--color--black) !important;} .has-cyan-bluish-gray-background-color{background-color:var(--wp--preset--color--cyan-bluish-gray) !important;} .has-white-background-color{background-color:var(--wp--preset--color--white) !important;} .has-pale-pink-background-color{background-color:var(--wp--preset--color--pale-pink) !important;} .has-vivid-red-background-color{background-color:var(--wp--preset--color--vivid-red) !important;} .has-luminous-vivid-orange-background-color{background-color:var(--wp--preset--color--luminous-vivid-orange) !important;} .has-luminous-vivid-amber-background-color{background-color:var(--wp--preset--color--luminous-vivid-amber) !important;} .has-light-green-cyan-background-color{background-color:var(--wp--preset--color--light-green-cyan) !important;} .has-vivid-green-cyan-background-color{background-color:var(--wp--preset--color--vivid-green-cyan) !important;} .has-pale-cyan-blue-background-color{background-color:var(--wp--preset--color--pale-cyan-blue) !important;} .has-vivid-cyan-blue-background-color{background-color:var(--wp--preset--color--vivid-cyan-blue) !important;} .has-vivid-purple-background-color{background-color:var(--wp--preset--color--vivid-purple) !important;} .has-black-border-color{border-color:var(--wp--preset--color--black) !important;} .has-cyan-bluish-gray-border-color{border-color:var(--wp--preset--color--cyan-bluish-gray) !important;} .has-white-border-color{border-color:var(--wp--preset--color--white) !important;} .has-pale-pink-border-color{border-color:var(--wp--preset--color--pale-pink) !important;} .has-vivid-red-border-color{border-color:var(--wp--preset--color--vivid-red) !important;} .has-luminous-vivid-orange-border-color{border-color:var(--wp--preset--color--luminous-vivid-orange) !important;} .has-luminous-vivid-amber-border-color{border-color:var(--wp--preset--color--luminous-vivid-amber) !important;} .has-light-green-cyan-border-color{border-color:var(--wp--preset--color--light-green-cyan) !important;} .has-vivid-green-cyan-border-color{border-color:var(--wp--preset--color--vivid-green-cyan) !important;} .has-pale-cyan-blue-border-color{border-color:var(--wp--preset--color--pale-cyan-blue) !important;} .has-vivid-cyan-blue-border-color{border-color:var(--wp--preset--color--vivid-cyan-blue) !important;} .has-vivid-purple-border-color{border-color:var(--wp--preset--color--vivid-purple) !important;} .has-vivid-cyan-blue-to-vivid-purple-gradient-background{background:var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;} .has-light-green-cyan-to-vivid-green-cyan-gradient-background{background:var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;} .has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;} .has-luminous-vivid-orange-to-vivid-red-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;} .has-very-light-gray-to-cyan-bluish-gray-gradient-background{background:var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;} .has-cool-to-warm-spectrum-gradient-background{background:var(--wp--preset--gradient--cool-to-warm-spectrum) !important;} .has-blush-light-purple-gradient-background{background:var(--wp--preset--gradient--blush-light-purple) !important;} .has-blush-bordeaux-gradient-background{background:var(--wp--preset--gradient--blush-bordeaux) !important;} .has-luminous-dusk-gradient-background{background:var(--wp--preset--gradient--luminous-dusk) !important;} .has-pale-ocean-gradient-background{background:var(--wp--preset--gradient--pale-ocean) !important;} .has-electric-grass-gradient-background{background:var(--wp--preset--gradient--electric-grass) !important;} .has-midnight-gradient-background{background:var(--wp--preset--gradient--midnight) !important;} .has-small-font-size{font-size:var(--wp--preset--font-size--small) !important;} .has-medium-font-size{font-size:var(--wp--preset--font-size--medium) !important;} .has-large-font-size{font-size:var(--wp--preset--font-size--large) !important;} .has-x-large-font-size{font-size:var(--wp--preset--font-size--x-large) !important;} .wp-block-navigation a:where(:not(.wp-element-button)){color:inherit;}:where(.wp-block-post-template.is-layout-flex){gap:1.25em;}:where(.wp-block-post-template.is-layout-grid){gap:1.25em;}:where(.wp-block-columns.is-layout-flex){gap:2em;}:where(.wp-block-columns.is-layout-grid){gap:2em;} .wp-block-pullquote{font-size:1.5em;line-height:1.6;}</style> <link rel="stylesheet" type="text/css" href="//www.fluentcpp.com/wp-content/cache/wpfc-minified/kb04do0b/9ubxy.css" media="all"/> <link rel="https://api.w.org/" href="https://www.fluentcpp.com/wp-json/"/><link rel="alternate" type="application/json" href="https://www.fluentcpp.com/wp-json/wp/v2/pages/816"/><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.fluentcpp.com/xmlrpc.php?rsd"/> <meta name="generator" content="WordPress 6.5.3"/> <link rel='shortlink' href='https://www.fluentcpp.com/?p=816'/> <link rel="alternate" type="application/json+oembed" href="https://www.fluentcpp.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.fluentcpp.com%2Fposts%2F"/> <link rel="alternate" type="text/xml+oembed" href="https://www.fluentcpp.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.fluentcpp.com%2Fposts%2F&format=xml"/> <script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-88369008-1', 'auto'); ga('send', 'pageview');</script> <style>img#wpstats{display:none}</style> <style>.wp-video-shortcode{max-width:100% !important;} body{background:#;} .cnt .sAs .twr{background:#;} .cnt article h1.entry-title a{color:#2c2c2c;} .cnt article h2.entry-title a{color:#2c2c2c;} .bSe h1{color:#2c2c2c;} .bSe h2{color:#2c2c2c;} .bSe h3{color:#2c2c2c;} .bSe h4{color:#2c2c2c;} .bSe h5{color:#2c2c2c;} .bSe h6{color:#2c2c2c;} .cnt p{color:#2c2c2c;} .cnt .bSe article{color:#2c2c2c;} .cnt article h1 a, .tve-woocommerce .bSe .entry-title, .tve-woocommerce .bSe .page-title{font-family:Roboto Slab,sans-serif;} .bSe h1{font-family:Roboto Slab,sans-serif;} .bSe h2,.tve-woocommerce .bSe h2{font-family:Roboto Slab,sans-serif;} .bSe h3,.tve-woocommerce .bSe h3{font-family:Roboto Slab,sans-serif;} .bSe h4{font-family:Roboto Slab,sans-serif;} .bSe h5{font-family:Roboto Slab,sans-serif;} .bSe h6{font-family:Roboto Slab,sans-serif;} #text_logo{font-family:Roboto Slab,sans-serif;} .cnt p, .bp-t .bSe, .bp-t p, .tve-woocommerce .product p, .tve-woocommerce .products p{font-family:Roboto Slab,sans-serif;font-weight:400;} article strong{font-weight:bold;} .bSe h1, .bSe .entry-title{font-size:54px;} .cnt{font-size:17px;} .thrivecb{font-size:17px;} .out{font-size:17px;} .aut p{font-size:17px;} .cnt p{line-height:1.8em;} .thrivecb{line-height:1.8em;} .cnt .cmt, .cnt .acm{background-color:#ea8355;} .trg{border-color:#ea8355 transparent transparent;} .str{border-color:transparent #ea8355 transparent transparent;} .pgn a:hover, .pgn .dots a:hover{background-color:#ea8355;} .brd ul li a{color:#ea8355;} .bSe a{color:#ea8355;} .lhgh{line-height:1.8em;} .dhgh{line-height:1.8em;} .lhgh{line-height:1.8em;} .dhgh{line-height:1.8em;}</style> <style></style> <style>.synved-social-resolution-single{display:inline-block;} .synved-social-resolution-normal{display:inline-block;} .synved-social-resolution-hidef{display:none;} @media only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 192dpi) { .synved-social-resolution-normal{display:none;} .synved-social-resolution-hidef{display:inline-block;} }</style> <style>.far.f0.light{background:transparent !important;} .bSe .cnt ul li{font-family:Roboto Slab !important;}</style> </head> <body class="page-template-default page page-id-816 custom-background"> <div class="sAs left sdef"> <div class="sAsdmy"></div><div class="sAsin"> <div class="msd"> <a href="https://www.fluentcpp.com/" id="logo"> <img src="https://www.fluentcpp.com/wp-content/uploads/2016/11/c10318_fluent_cpp_logo_jc1-1-e1479715436541.png" alt="Fluent C++"/> </a> <div class="si"> <div class="auth"> <div class="aut"> <img alt='' src='https://secure.gravatar.com/avatar/11bd501bb5da593c19aa7ae0b637649b?s=125&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/11bd501bb5da593c19aa7ae0b637649b?s=250&d=mm&r=g 2x' class='avatar avatar-125 photo' height='125' width='125' decoding='async'/></div><div class="aubb" style="display: none;"> <h4>About <a href="https://www.fluentcpp.com/author/">Jonathan Boccara</a> </h4> <p>Hello, my name is Jonathan Boccara, I'm your host on Fluent C++. I have been a developer for 10 years. My focus is on how to write <strong>expressive code</strong>. I wrote the book <a href="https://leanpub.com/legacycode?utm_source=blog&utm_campaign=bio">The Legacy Code Programmer's Toolbox</a>. I'm happy to take your feedback, don't hesitate to drop a comment on a post, <a href="http://twitter.com/joboccara">follow me</a> or <a href="mailto:jonathan@fluentcpp.com">get in touch</a> directly !</p> <div class="aubs clearfix"> <ul class="left"> <li> <a href="http://twitter.com/http://joboccara" class="twitter" target="_blank"></a> </li> <li> <a href="https://www.linkedin.com/in/jonathan-boccara-23826921/" class="linkedin" target="_blank"></a> </li> </ul> <a href="http://fluentcpp.com/about-me" class="mre right">Read more</a></div></div></div><p>Jonathan Boccara's blog</p></div><div class="sb"> <a href="" class="sbm hbd"></a> <a href="" class="sbs hbd"></a> <form action="https://www.fluentcpp.com/" method="get" class="msh" style="display: none;"> <div> <input type="text" placeholder="Search..." class="search-field" name="s"/> <button type="submit" class="search-button"></button> <div class="clear"></div></div></form></div><nav class="menu-primary-menu-container"><ul id="menu-primary-menu" class="menu"><li id="menu-item-819" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-816 current_page_item toplvl menu-item-819"><a href="https://www.fluentcpp.com/posts/" aria-current="page">Posts</a></li> <li id="menu-item-4046" class="menu-item menu-item-type-post_type menu-item-object-page toplvl menu-item-4046"><a href="https://www.fluentcpp.com/getthemap/">The World Map of C++ STL Algorithms</a></li> <li id="menu-item-2250" class="menu-item menu-item-type-post_type menu-item-object-page toplvl menu-item-2250"><a href="https://www.fluentcpp.com/dailycpp/">Daily C++</a></li> <li id="menu-item-6335" class="menu-item menu-item-type-custom menu-item-object-custom toplvl menu-item-6335"><a href="https://www.redbubble.com/people/fluentcpp/shop?asc=u">Store</a></li> <li id="menu-item-518" class="menu-item menu-item-type-post_type menu-item-object-page toplvl menu-item-518"><a href="https://www.fluentcpp.com/about-me/">About</a></li> </ul></nav> <div class="clearfix"></div></div><div class="wsd" id="scrollingWidgets"> <div class="viewport"> <div class="overview scrollbar-chrome"> <div class="clear"></div></div></div></div></div></div><section class="bSe fullWidth"> <section class="far f0 light"> <div class="wrp"> <h4 style="text-align: center;"><a href="https://www.patreon.com/fluentcpp"><img class="aligncenter wp-image-205 size-full" src="https://www.fluentcpp.com/wp-content/uploads/2016/12/banner_black-1-e1493554197481.jpg" alt="" width="1024" height="319"/></a></h4></div></section> <div class="wrp"> <div class="ssf"> <div class="ssfi"> <div class="scfm"> <div class="ss"> <a class="tw" href="https://twitter.com/share?text=Posts:&url=https://www.fluentcpp.com/posts/&via=JoBoccara" onclick="return ThriveApp.open_share_popup(this.href, 545, 433);"> <span>Tweet</span> </a></div></div></div></div><article > <div class="cnt"> <h1 class="entry-title">Posts</h1> <p>Here are the posts <span style="color: #ff6600;">published</span> or <em>planned</em> so far on Fluent C++.</p> <p>The posts marked with a <img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> are those I believe are the most adapted for a Daily C++ session.</p> <p>I will add more, but if there is something in particular you’d like to read about, <a href="mailto:jonathan@fluentcpp.com" target="_blank" rel="noopener noreferrer">let me know</a>!</p> <ul> <li><a href="#expressive-code">General expressive code C++</a></li> <li><a href="https://www.fluentcpp.com/STL">The STL</a></li> <li><a href="#methodology">Methodology</a></li> <li><a href="#strong-types">Strong types in C++</a></li> <li><a href="#default-parameters">Function parameters in C++</a></li> <li><a href="#smart-pointers">Smart pointers in C++</a></li> <li><a href="#performance">Performance</a></li> <li><a href="#data-structures">Data structures in C++</a></li> <li><a href="#boost">Boost</a></li> <li><a href="#wordcounts">Word counts in code</a></li> <li><a href="#refactoring">Refactoring in C++</a></li> <li><a href="#templates">C++ Templates</a></li> <li><a href="#challenges">Challenges for the most expressive code</a></li> <li><a href="#meta-posts">Meta-posts</a></li> </ul> <h3 id="expressive-code"><span style="color: #ff6600;">About General Expressive Code in C++</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2017/01/30/how-to-choose-good-names/" target="_blank" rel="noopener noreferrer">How to choose good names in your code</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2016/11/22/make-your-functions-functional/" target="_blank" rel="noopener noreferrer">Make your functions functional</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> – <a href="https://www.fluentcpp.com/2017/12/08/make-functions-functional-video/" target="_blank" rel="noopener noreferrer">video</a></li> <li><a href="https://www.fluentcpp.com/2016/12/15/respect-levels-of-abstraction/" target="_blank" rel="noopener noreferrer">Respect levels of abstraction</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/01/03/super-expressive-code-by-raising-levels-of-abstraction/" target="_blank" rel="noopener noreferrer">Super expressive code by Raising Levels of Abstraction</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/01/19/making-code-expressive-lambdas/" target="_blank" rel="noopener noreferrer">Making code expressive with lambdas</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/02/06/what-70-people-came-up-with-on-expressive-code/" target="_blank" rel="noopener noreferrer">What 70 people came up with on expressive code</a></li> <li><a href="https://www.fluentcpp.com/2016/11/24/clearer-interfaces-with-optionalt/" target="_blank" rel="noopener noreferrer">Clearer interfaces with optional<T></a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2016/12/01/partial-queries-with-optionalt/" target="_blank" rel="noopener noreferrer">Partial queries with optional<T></a></li> <li><a href="https://www.fluentcpp.com/2017/03/31/how-typed-cpp-is-and-why-it-matters/" target="_blank" rel="noopener noreferrer">How typed C++ is, and why it matters</a></li> <li><a href="https://www.fluentcpp.com/2017/04/07/restricting-interface/"><span style="line-height: 1.5;">Restricting an interface in C++</span></a></li> <li><a href="https://www.fluentcpp.com/2017/05/02/to-comment-or-not-to-comment-that-is-the-question/" target="_blank" rel="noopener noreferrer">To comment or not to comment // that is the question</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/05/09/compact-code-becomes-buggy-code-order-evaluations/" target="_blank" rel="noopener noreferrer">How Compact Code Can Become Buggy Code: Getting Caught By The Order of Evaluations</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/06/02/write-template-metaprogramming-expressively/" target="_blank" rel="noopener noreferrer">Expressive C++ Template Metaprogramming</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/06/06/using-tostring-custom-types-cpp/" target="_blank" rel="noopener noreferrer"><span style="line-height: 1.5;">How to use toString on custom types in C++</span></a></li> <li><a href="https://www.fluentcpp.com/2017/06/13/the-real-difference-between-struct-class/" target="_blank" rel="noopener noreferrer"><span style="line-height: 1.5;">The </span><em>real</em><span style="line-height: 1.5;"> difference between struct and class</span></a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> – <a href="https://www.fluentcpp.com/2018/03/02/choose-struct-class/">video</a></li> <li><a href="https://www.fluentcpp.com/2017/06/20/interface-principle-cpp/" target="_blank" rel="noopener noreferrer">The Interface Principle in C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/06/27/how-to-collapse-nested-switch-statements/" target="_blank" rel="noopener noreferrer">How to Flatten Out Nested Switch Statements</a></li> <li><a href="https://www.fluentcpp.com/2017/06/30/insulating-a-toxic-api-from-the-rest-of-your-code/" target="_blank" rel="noopener noreferrer">How to Insulate a Toxic Api from the Rest of Your Code</a></li> <li><a href="https://www.fluentcpp.com/2017/07/04/multiple-error-handling-with-the-optional-monad-in-c/" target="_blank" rel="noopener noreferrer">Multiple error handling with the optional monad in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/07/07/optional-monad-cpp-without-ugly-stuff/" target="_blank" rel="noopener noreferrer">The Optional Monad In C++, Without The Ugly Stuff</a></li> <li><a href="https://www.fluentcpp.com/2017/07/11/dealing-multiple-paths-vector-monad-c/" target="_blank" rel="noopener noreferrer">Dealing with Multiple Paths with the Vector Monad in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/07/14/the-vector-monad-in-c-without-the-ugly-stuff/" target="_blank" rel="noopener noreferrer">The Vector Monad In C++, Without The Ugly Stuff</a></li> <li><a href="https://www.fluentcpp.com/2017/07/21/making-if-statements-understandable/" target="_blank" rel="noopener noreferrer">How to Make If Statements More Understandable</a></li> <li><a href="https://www.fluentcpp.com/2017/07/25/understandable-statements-run-slower/" target="_blank" rel="noopener noreferrer">Do Understandable If Statements Run Slower?</a></li> <li><a href="https://www.fluentcpp.com/2017/08/04/metaclasses-cpp-summary/" target="_blank" rel="noopener noreferrer">A Summary of the Metaclasses Proposal in C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/03/09/c-metaclasses-proposal-less-5-minutes/">The C++ Metaclasses Proposal in Less Than 5 Minutes</a></li> <li><a href="https://www.fluentcpp.com/2017/09/29/tee-getting-precious-debug-info-easily/">tee – Get Debug Info With Little Impact On Code</a></li> <li><a href="https://www.fluentcpp.com/2017/10/27/function-aliases-cpp/">Function Aliases In C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/10/31/halloween-horror-code-stories/">10 Halloween code stories that will freak you out</a></li> <li><a href="https://www.fluentcpp.com/2017/11/03/unit-tests-express-code-intent/">How Unit Tests Help Express Your Code’s Intent</a> (by Tim Scott)</li> <li><a href="https://www.fluentcpp.com/2017/12/19/build-strings-from-plain-string-up-to-boost-karma/" target="_blank" rel="noopener noreferrer">The Complete Guide to Building Strings In C++: From “Hello, world” Up To Boost Karma</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/12/01/7-names-never-see-code/" target="_blank" rel="noopener noreferrer">7 names we should never see in code</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/12/15/more-tips-on-naming/" target="_blank" rel="noopener noreferrer">More tips on naming</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/12/22/expressive-code-matters/">Why expressive code matters</a></li> <li><a href="https://www.fluentcpp.com/2017/12/26/emulate-super-base/">How to emulate the “super” keyword in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/01/23/function-return/">How to be clear about what your functions return</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/01/30/most-vexing-parse/">The Most Vexing Parse: How to Spot It and Fix It Quickly</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/02/06/understanding-lvalues-rvalues-and-their-references/">Lvalues, Rvalues and their references</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/02/13/to-raii-or-not-to-raii/">To RAII or not to RAII, that is the question</a></li> <li><a href="https://www.fluentcpp.com/2018/02/16/right-question-right-name/">The right question for the right name</a></li> <li><a href="https://www.fluentcpp.com/2018/02/20/on-using-guards-in-cpp/">On Using Guards In C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/02/27/replace-else-if-ternary-operator/">Replacing An Else-If Sequence With The Ternary Operator</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/03/06/issues-singletons-signals/">The issues with singletons and how to fix them</a></li> <li><a href="https://www.fluentcpp.com/2018/04/01/cpp-will-no-longer-have-pointers/">C++ Will No Longer Have Pointers</a></li> <li><a href="https://www.fluentcpp.com/2018/04/27/tag-dispatching/">How to Use Tag Dispatching Effectively</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/05/01/when-to-use-enums-and-when-to-use-tag-dispatching-in-cpp/">When to Use Enums And When To Use Tag Dispatching In C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/05/04/passing-booleans-to-an-interface-in-an-expressive-way/">Passing Booleans to an Interface in an Expressive Way</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/05/29/a-concrete-example-of-naming-consistency/">A Concrete Example of Naming Consistency</a></li> <li><a href="https://www.fluentcpp.com/2018/06/15/should-structs-have-constructors-in-cpp/">struct and Constructors in C++: an “It’s complicated” Relationship</a> <img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/06/19/3-simple-c17-features-that-will-make-your-code-simpler/">3 Simple C++17 Features That Will Make Your Code Simpler</a> (by JFT)</li> <li><a href="https://www.fluentcpp.com/2018/07/13/the-incredible-const-reference-that-isnt-const/">The incredible const reference that isn’t const</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/07/17/how-to-construct-c-objects-without-making-copies/">How to Construct C++ Objects Without Making Copies</a> (by Miguel Raggi)</li> <li><a href="https://www.fluentcpp.com/2018/07/20/simplicity-in-cpp-code-design-podcast/">Simplicity in C++ Code (Podcast)</a></li> <li><a href="https://www.fluentcpp.com/2018/07/24/how-to-convert-a-string-to-an-int-in-c/">How to Convert a String to an int in C++</a> (by JFT)</li> <li><a href="https://www.fluentcpp.com/2018/07/27/how-to-efficiently-convert-a-string-to-an-int-in-c/">How to *Efficiently* Convert a String to an int in C++</a> (by JFT)</li> <li><a href="https://www.fluentcpp.com/2018/07/31/how-to-get-along-with-the-comma-operator/">Getting Along With The Comma Operator</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/08/24/how-to-design-early-returns-in-c-based-on-procedural-programming/">How to Design Early Returns in C++ (Based on Procedural Programming)</a></li> <li><a href="https://www.fluentcpp.com/2018/08/31/modern-cpp-fake-it-until-you-have-it/">Modern C++: 7 Ways to Fake It Until You Have It</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/04/function-poisoning-in-cpp/">Function Poisoning in C++</a> (by Federico Kircheis)</li> <li><a href="https://www.fluentcpp.com/2018/09/07/input-output-values/">How to Deal with Values That Are Both Input and Output</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/11/how-to-write-simple-code-to-accomplish-complex-tasks/">How to Write Simple Code to Accomplish Complex Tasks</a> (by Miguel Raggi)</li> <li><a href="https://www.fluentcpp.com/2018/09/28/auto-stick-changing-style/">“auto to stick” and changing your style</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/10/30/case-where-auto-leads-to-undefined-behaviour/">A Case Where Using Auto Leads to Undefined Behaviour</a></li> <li><a href="https://www.fluentcpp.com/2018/10/02/pointers-references-optional-references-cpp/">Pointers, References and Optional References</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/10/05/pros-cons-optional-references/">Why Optional References Didn’t Make It In the C++ Standard</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/13/to-dry-or-not-to-dry/">To DRY or not to DRY?</a> (by Damien Beaufils)</li> <li><a href="https://www.fluentcpp.com/2018/11/20/deprecating-and-deleting-functions-in-cpp/">Deprecating and Deleting Functions in C++</a> (by Federico Kircheis)</li> <li><a href="https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/">Named arguments in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/03/22/generalizing-unordered-named-arguments/">Generalizing Unordered Named Arguments</a> (by Till Heinzel)</li> <li><a href="https://www.fluentcpp.com/2018/11/23/function-parameters-making-interfaces-easy-to-use/">How to Design Function Parameters That Make Your Interfaces Easy To Use (1/3)</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/27/design-function-parameters-make-interfaces-easy-use-23/">How to Design Function Parameters That Make Your Interfaces Easy To Use (2/3)</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/30/function-parameters-3/">How to Design Function Parameters That Make Your Interfaces Easy To Use (3/3)</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/12/04/an-extraterrestrial-guide-to-c-formatting/">An Extraterrestrial Guide to C++ Formatting</a></li> <li><a href="https://www.fluentcpp.com/2018/12/28/timer-cpp/">A Simple Timer in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/01/01/todo_before-clean-codebase-2019/">TODO_BEFORE(): A Cleaner Codebase for 2019</a></li> <li><a href="https://www.fluentcpp.com/2019/01/04/functional-programming-is-not-a-silver-bullet/">Functional Programming Is Not a Silver Bullet</a></li> <li><a href="https://www.fluentcpp.com/2019/01/08/restmycase-a-c-library-for-formatting-string-cases/">RestMyCase: A C++ Library for Formatting String Cases</a> (by JFT)</li> <li><a href="https://www.fluentcpp.com/2019/01/22/pitfalls-of-aliasing-a-pointer-in-modern-cpp/">The Pitfalls of Aliasing Pointers in Modern C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/03/05/for_each_arg-applying-a-function-to-each-argument-of-a-function-in-cpp/">for_each_arg: Applying a Function to Each Argument of a Function in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/03/26/10-code-smells-a-static-analyser-can-locate-in-a-codebase/">10 Code Smells a Static Analyser Can Locate in a Codebase</a></li> <li><a href="https://www.fluentcpp.com/2019/04/09/how-to-emulate-the-spaceship-operator-before-c20-with-crtp/">How to Emulate the Spaceship Operator Before C++20 with CRTP</a></li> <li><a href="https://www.fluentcpp.com/2019/04/19/compiler-generated-functions-rule-of-three-and-rule-of-five/">Compiler-generated Functions, Rule of Three and Rule of Five</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/04/23/the-rule-of-zero-zero-constructor-zero-calorie/">The Rule of Zero in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/04/26/how-to-write-safe-and-expressive-multi-threaded-code-in-cpp11/">How to Write Safe and Expressive Multi-Threaded Code in C++11</a></li> <li><a href="https://www.fluentcpp.com/2019/04/30/common-vocabulary-software-developers/">The Common Vocabulary of Software Developers</a></li> <li><a href="https://www.fluentcpp.com/2019/05/03/curried-objects-in-cpp/">Curried objects in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/05/07/output-strings-separated-commas-cpp/">How to output strings separated by commas in C++ (and other mutable curried objects)</a></li> <li><em>Should Private Methods Always Be Const?</em></li> <li><em>The common vocabulary of software developers</em></li> <li><em>Which programming paradigm gives the most expressive code?</em></li> <li><em>Compiler-generated Functions, Rule of Three and Rule of Five</em></li> </ul> <h3 id="methodology"><span style="color: #ff6600;">About Methodology</span></h3> <p>The primary focus of the blog is on code so this section is slimmer than the rest, but it’s always useful to consider how to approach code from time to times.</p> <ul> <li><a href="https://www.fluentcpp.com/2017/04/04/the-dailies-a-new-way-to-learn-at-work/" target="_blank" rel="noopener noreferrer">The Dailies: a new way to learn at work</a></li> <li><a href="https://www.fluentcpp.com/2017/09/14/become-recognized-cpp-skills-dailies/" target="_blank" rel="noopener noreferrer">Spread Knowledge in Your Company With Your “Daily C++”</a></li> <li><a href="https://www.fluentcpp.com/2017/02/27/50-people-opinions-about-how-to-get-better-as-a-software-developer/" target="_blank" rel="noopener noreferrer">50 People’s Opinions About How To Get Better As A Software Developer</a></li> <li><a href="https://www.fluentcpp.com/2017/06/23/7-ways-better-cpp-summer/" target="_blank" rel="noopener noreferrer">7 Ways to Get Better at C++ During this Summer</a></li> <li><a href="https://www.fluentcpp.com/2017/07/28/what-books-to-read-to-get-better-at-c/" target="_blank" rel="noopener noreferrer">What Books to Read to Get Better In C++</a></li> <li><a href="https://www.fluentcpp.com/2017/09/19/cppcast-show-cpp-developer/" target="_blank" rel="noopener noreferrer">CppCast: A Show For All C++ Developers</a></li> <li><a href="https://www.fluentcpp.com/2017/11/14/getting-inspired-by-good-code/" target="_blank" rel="noopener noreferrer">Getting inspired by good code</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/11/21/using-bad-code-learn-write-great-code/" target="_blank" rel="noopener noreferrer">How to use bad code to learn how to write great code</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/01/19/5-tips-find-way-around-legacy-codebase/">5 Tips to Find Your Way Around A Legacy Codebase</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/01/01/7-good-resolutions-to-write-better-code-this-year/">7 good resolutions to write better code this year</a></li> <li><a href="https://www.fluentcpp.com/2018/06/05/10-techniques-that-will-make-you-understand-other-peoples-code-better/">10 Techniques That Will Make You Understand Other People’s Code Better</a> (by Patricia Aas)</li> <li><a href="https://www.fluentcpp.com/2018/06/08/triple-trip-report-from-accu-c-russia-and-cnow/">Triple trip report from ACCU, C++ Russia and C++Now 2018</a></li> <li><a href="https://www.fluentcpp.com/2018/06/29/7-more-ways-to-get-better-at-c-this-summer-2018-edition/">7 More Ways to Get Better at C++ This Summer (2018 Edition)</a></li> <li><a href="https://www.fluentcpp.com/2019/01/11/applying-good-code-practices-everyday-life/">How I Applied Coding Best Practices to Improve My Daily Life</a></li> <li><a href="https://www.fluentcpp.com/2019/02/01/the-legacy-code-programmers-toolbox-is-out/">The Legacy Code Programmer’s Toolbox is Out</a></li> <li><a href="https://www.fluentcpp.com/2019/04/12/cppp/">CPPP</a></li> </ul> <h3 id="strong-types"><span style="color: #ff6600;">About Strong Types in C++</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2016/12/05/named-constructors/" target="_blank" rel="noopener noreferrer">Strongly typed constructors</a></li> <li><a href="https://www.fluentcpp.com/2016/12/08/strong-types-for-strong-interfaces/" target="_blank" rel="noopener noreferrer">Strong types for strong interfaces</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/03/06/passing-strong-types-reference-revisited/" target="_blank" rel="noopener noreferrer">Passing strong types by reference</a></li> <li><a href="https://www.fluentcpp.com/2017/02/20/strong-lambdas-strong-generic-types/" target="_blank" rel="noopener noreferrer">Strong lambdas: strong typing over generic types</a></li> <li><a href="https://www.fluentcpp.com/2017/05/05/news-strong-types-are-free/" target="_blank" rel="noopener noreferrer">Good news: strong types are (mostly) free in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/05/23/strong-types-inheriting-functionalities-from-underlying/" target="_blank" rel="noopener noreferrer">Inheriting functionalities from the underlying type</a></li> <li><a href="https://www.fluentcpp.com/2017/05/30/implementing-a-hash-function-for-strong-types/" target="_blank" rel="noopener noreferrer">Making strong types hashable</a></li> <li><a href="https://www.fluentcpp.com/2018/02/02/strong-types-strong-interfaces-talk-meeting-cpp/">Strong Types For Strong Interfaces: my talk at Meeting C++</a></li> <li><a href="https://www.fluentcpp.com/2017/05/26/strong-types-conversions/" target="_blank" rel="noopener noreferrer">Converting strong units to one another</a></li> <li><a href="https://www.fluentcpp.com/2017/08/08/metaclasses-ultimate-answer-strong-typing-c/" target="_blank" rel="noopener noreferrer">Metaclasses, the Ultimate Answer to Strong Typing in C++?</a></li> <li><a href="https://www.fluentcpp.com/2017/11/07/calling-functions-methods-strong-types/">Calling functions and methods on strong types</a></li> <li><a href="https://www.fluentcpp.com/2017/11/10/strong-types-multiple-return-values/">Using Strong Types to Return Multiple Values</a></li> <li><a href="https://www.fluentcpp.com/2018/01/05/making-strong-types-implicitly-convertible/">Making strong types implicitly convertible</a></li> <li><a href="https://www.fluentcpp.com/2018/01/09/strong-templates/">Strong templates</a></li> <li><a href="https://www.fluentcpp.com/2018/01/16/strong-optionals/">Strong optionals</a></li> <li><a href="https://www.fluentcpp.com/2018/04/06/strong-types-by-struct/">Getting the Benefits of Strong Typing in C++ at a Fraction of the Cost</a> (by Vincent Zalzal)</li> </ul> <h3 id="default-parameters"><span style="color: #ff6600;">About Function Parameters</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2018/08/03/default-parameters-facts/">Default parameters in C++: the facts (including the secret ones)</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/08/07/should-i-use-overloads-or-default-parameters/">Should I overload or use default parameters ?</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><code><a href="https://www.fluentcpp.com/2018/08/14/defaulted-helper-work-around-constraints-default-parameters/">Defaulted</a></code><a href="https://www.fluentcpp.com/2018/08/14/defaulted-helper-work-around-constraints-default-parameters/">: a helper to work around default parameters constraints</a></li> <li><a href="https://www.fluentcpp.com/2018/08/21/default-parameters-mocking/">Integrating mocking with default parameters</a></li> <li><a href="https://www.fluentcpp.com/2018/08/10/template-default-arguments-application-smart-iterators/">Default Parameters With Default Template Type Parameters</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/23/function-parameters-making-interfaces-easy-to-use/">How to Design Function Parameters That Make Interfaces Easier to Use (1/3)</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/27/design-function-parameters-make-interfaces-easy-use-23/">How to Design Function Parameters That Make Interfaces Easier to Use (2/3)</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/30/function-parameters-3/">How to Design Function Parameters That Make Interfaces Easier to Use (3/3)</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> </ul> <h3 id="smart-pointers"><span style="color: #ff6600;">About Smart pointers</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2017/08/22/smart-developers-use-smart-pointers-smart-pointers-basics/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – Smart pointer basics</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/25/knowing-your-smart-pointers/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – Knowing your smart pointers to express your intentions</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/29/custom-deleters/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – Custom deleters</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/09/01/make-custom-deleters-expressive/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – How to Make Custom Deleters More Expressive</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/09/05/changing-deleters-during-the-life-of-a-unique_ptr/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – Changing deleters during the life of a unique_ptr</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/09/22/make-pimpl-using-unique_ptr/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – How to implement the pimpl idiom by using unique_ptr</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/09/08/make-polymorphic-copy-modern-cpp/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – Polymorphic clones in modern C++</a></li> <li><a href="https://www.fluentcpp.com/2017/09/12/how-to-return-a-smart-pointer-and-use-covariance/" target="_blank" rel="noopener noreferrer">Smart developers use smart pointers – How to return smart pointers AND use covariance</a> (by Raoul Borges)</li> <li><a href="https://www.fluentcpp.com/2018/11/06/how-to-transfer-unique_ptrs-from-a-set-to-another/">How to Transfer unique_ptrs From a Set to Another Set</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/12/25/free-ebook-smart-pointers/">A Free Ebook on C++ Smart Pointers</a></li> </ul> <h3 id="performance"><span style="color: #ff6600;">About Performance</span></h3> <p>Although expressiveness is crucial for the survival of code, we don’t want it to get in the way of the performance of our applications.</p> <ul> <li><a href="https://www.fluentcpp.com/2016/11/28/return-value-optimizations/" target="_blank" rel="noopener noreferrer">Return value optimizations</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/05/05/news-strong-types-are-free/" target="_blank" rel="noopener noreferrer">Good news: strong types are (mostly) free in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/12/05/both-expressive-and-fast-code-provide-minimal-interface/" target="_blank" rel="noopener noreferrer">Want Both Expressive And Fast Code? Provide A Minimal Interface</a></li> </ul> <h3 id="STL"><span style="color: #ff6600;">About the STL</span></h3> <p>For more about how to master the STL, check out the <a href="https://www.fluentcpp.com/stl-learning-resource/" target="_blank" rel="noopener noreferrer">STL learning resource</a>.</p> <p>The STL-like components I have developed:</p> <ul> <li><a href="https://www.fluentcpp.com/2017/02/09/set-aggregate-set-seggregate-higher-level-algorithms-on-sets/" target="_blank" rel="noopener noreferrer">set_aggregate, set_segregate: higher-level algorithms on sets</a></li> <li><a href="https://www.fluentcpp.com/2017/03/17/smart-iterators-for-inserting-into-sorted-container/" target="_blank" rel="noopener noreferrer">A smart iterator for inserting into a sorted container in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/03/21/smart-iterator-aggregating-new-elements-existing-ones-map-set/" target="_blank" rel="noopener noreferrer">A smart iterator for aggregating data into a map in C++</a></li> <li><a href="https://www.fluentcpp.com/2017/11/28/output-iterator-adaptors-symmetry-range-adaptors/" target="_blank" rel="noopener noreferrer">Smart output iterators</a></li> </ul> <p><span style="line-height: 1.5;">Understanding how to use the STL:</span></p> <ul> <li><a href="https://www.fluentcpp.com/2017/01/05/the-importance-of-knowing-stl-algorithms/" target="_blank" rel="noopener noreferrer">The importance of knowing STL <algorithm>s</a></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/02/16/custom-comparison-equality-equivalence-stl/" target="_blank" rel="noopener noreferrer">Custom comparison, equality and equivalence with the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/01/23/stl-function-objects-stateless-is-stressless/" target="_blank" rel="noopener noreferrer">STL Function objects: Stateless is Stressless</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/01/12/ranges-stl-to-the-next-level/" target="_blank" rel="noopener noreferrer">Ranges: the STL to the Next Level</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> – <a href="https://www.fluentcpp.com/2018/02/09/introduction-ranges-library/">Introduction to the Ranges Library</a></li> <li><a href="https://www.fluentcpp.com/2017/03/09/functors-are-not-dead-the-double-functor-trick/" target="_blank" rel="noopener noreferrer"><span style="line-height: 1.5;">Functors are not dead: the double functor trick</span></a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a class="row-title" href="https://www.fluentcpp.com/2017/03/28/inserting-several-elements-into-an-stl-container/" target="_blank" rel="noopener noreferrer">Inserting several elements into an STL container efficiently</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/04/18/the-design-of-the-stl/" target="_blank" rel="noopener noreferrer">The design of the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/04/21/how-to-split-a-string-in-c/" target="_blank" rel="noopener noreferrer">How to split a string in C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/04/14/understand-ranges-better-with-the-new-cartesian-product-adaptor/" target="_blank" rel="noopener noreferrer">Better understand ranges with the new Cartesian Product adaptor</a></li> <li><a href="https://www.fluentcpp.com/2017/04/25/move-iterators/" target="_blank" rel="noopener noreferrer">Move iterators: where the STL meets Move semantics</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/06/09/search-set-another-type-key/" target="_blank" rel="noopener noreferrer">is_transparent: How to search a C++ set with another type than its key</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/01/overloaded-functions-stl/" target="_blank" rel="noopener noreferrer">How to Use Overloaded Functions With The STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/18/handle-multiple-types-max-without-cast/" target="_blank" rel="noopener noreferrer">How to Handle Multiple Types in Max Without A Cast<img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></a></li> <li><a href="https://www.fluentcpp.com/2017/10/13/size-capacity-stl-containers/">Size and capacity</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/10/06/stl-inserter-iterators-work/">How the insert iterator really works</a></li> <li><a href="https://www.fluentcpp.com/2017/10/20/think-function-objects-functions-rather-objects/">Think of function objects as functions rather than objects</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2017/11/24/how-to-use-the-stl-in-legacy-code/" target="_blank" rel="noopener noreferrer">How to Use the STL With Legacy Output Collections</a></li> <li><a href="https://www.fluentcpp.com/2018/03/30/is-stdfor_each-obsolete/">Is std::for_each obsolete?</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/04/24/following-conventions-stl/">Make Your Containers Follow the Conventions of the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/04/17/pass-polymorphic-object-stl-algorithm/">How to pass a polymorphic object to an STL algorithm</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/04/10/maps-vectors-multimap/">Which One Is Better: Map of Vectors, or Multimap?</a></li> <li><a href="https://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/">std::iterator is deprecated: Why, What It Was, and What to Use Instead</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/09/14/how-to-remove-elements-from-a-sequence-container/">How to Remove Elements from a Sequence Container in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/18/how-to-remove-pointers-from-a-vector-in-cpp/">How to Remove Pointers from a Vector in C++</a> (by Gaurav Sehgal) <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/21/remove-elements-associative-container-cpp/">How to Remove Elements from an Associative Container in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/25/remove-duplicates-associative-container-cpp/">How to Remove Duplicates from an Associative Container in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/10/26/how-to-access-the-index-of-the-current-element-in-a-modern-for-loop/">How to Access the Index of the Current Element in a Modern For Loop</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/11/06/how-to-transfer-unique_ptrs-from-a-set-to-another/">How to Transfer unique_ptrs From a Set to Another Set</a> <img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/11/09/retrieve-firsts-collection-pairs/">How to Retrieve the Firsts from a Collection of Pairs</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/02/07/why-you-should-use-stdfor_each-over-range-based-for-loops/">Why You Should Use std::for_each over Range-based For Loops</a> <em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/12/11/overview-of-std-map-insertion-emplacement-methods-in-cpp17/">Overview of std::map’s Insertion / Emplacement Methods in C++17</a></li> <li><a href="https://www.fluentcpp.com/2018/12/18/the-soa-vector-part-1-optimizing-the-traversal-of-a-collection/">The SoA Vector – Part 1: Optimizing the Traversal of a Collection</a></li> <li><a href="https://www.fluentcpp.com/2018/12/21/an-soa-vector-with-an-stl-container-interface-in-cpp/">The SoA Vector </a><a href="https://www.fluentcpp.com/2018/12/18/the-soa-vector-part-1-optimizing-the-traversal-of-a-collection/">–</a><a href="https://www.fluentcpp.com/2018/12/21/an-soa-vector-with-an-stl-container-interface-in-cpp/"> Part 2: Implementation in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/01/15/indexing-data-structures-with-c-scoped-enums/">Indexing Data Structures with C++ Scoped Enums</a></li> <li><a href="https://www.fluentcpp.com/2019/02/12/the-terrible-problem-of-incrementing-a-smart-iterator/">The Terrible Problem Of Incrementing A Smart Iterator</a></li> <li><a href="https://www.fluentcpp.com/2019/03/08/stl-algorithms-on-tuples/">STL Algorithms on Tuples</a></li> <li><a href="https://www.fluentcpp.com/2019/04/16/an-alternative-design-to-iterators-and-ranges-using-stdoptional/">An Alternative Design to Iterators and Ranges, Using std::optional</a></li> <li><em>A Map with Two Types of Keys in C++</em></li> <li><em>How to send an STL collection to a curried object</em></li> </ul> <p>STL algorithms as a whole:</p> <ul> <li><a href="http://fluentcpp.com/getTheMap">The World Map of the STL algorithms</a></li> <li><a href="https://www.fluentcpp.com/2018/07/10/105-stl-algorithms-in-less-than-an-hour/">105 STL Algorithms in Less Than an Hour</a></li> </ul> <p>STL algorithms in detail:</p> <ul> <li><a href="https://www.fluentcpp.com/2017/01/09/know-your-algorithms-algos-on-sets/" target="_blank" rel="noopener noreferrer">Know your algorithms: algos on sets</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> – <a href="https://www.fluentcpp.com/2017/12/29/stl-algorithms-sets/">video</a></li> <li><a href="https://www.fluentcpp.com/2018/01/12/how-is-stdset_difference-implemented/">How is std::set_difference implemented?</a></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/01/16/how-to-stdfind-something-efficiently-with-the-stl/" target="_blank" rel="noopener noreferrer">How to (std::)find something efficiently with the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/01/26/searching-an-stl-container/" target="_blank" rel="noopener noreferrer">Searching when you have access to an STL container</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a style="line-height: 1.5;" href="https://www.fluentcpp.com/2017/02/02/searching-algorithms-stl-holds-secret/" target="_blank" rel="noopener noreferrer">The searching <algorithm>s the STL holds secret</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/02/13/transform-central-algorithm/" target="_blank" rel="noopener noreferrer">std::transform, a central algorithm</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/02/23/predicates-on-ranges-with-the-stl/" target="_blank" rel="noopener noreferrer">Predicates on ranges with the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/03/23/filling-algorithms-stl/" target="_blank" rel="noopener noreferrer"><span style="line-height: 1.5;">Filling <algorithm>s</span></a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/04/11/mins-maxes-stl/" target="_blank" rel="noopener noreferrer">Mins and maxes</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/10/03/sorting-stl-algorithms/">Sorting with the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/10/10/partitioning-with-the-stl/">Partitioning</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/10/17/stdaccumulate-your-knowledge-on-algorithms/">(std::)Accumulate Your Knowledge On Algorithms</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/04/20/ways-reordering-collection-stl/">How to Reorder Collections With the STL</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/04/13/moving-ranges-stl/">Moving Ranges Around with STL Algorithms</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/03/16/heaps-cpp-stl/"><algorithm>s on heaps</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/09/14/how-to-remove-elements-from-a-sequence-container/">How to Remove Elements from a Sequence Container in C++</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/03/29/the-boostl-algorithms-boost-algorithms-that-extend-the-stl-1/">The BooSTL Algorithms: Boost Algorithms That Extend the STL (1/3)<em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></a></li> <li><a href="https://www.fluentcpp.com/2019/04/02/the-boostl-algorithms-boost-algorithms-that-extend-the-stl-2/">The BooSTL Algorithms: Boost Algorithms That Extend the STL (2/3)<em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></a></li> <li><a href="https://www.fluentcpp.com/2019/04/05/the-boostl-algorithms-boost-algorithms-that-extend-the-stl-3/">The BooSTL Algorithms: Boost Algorithms That Extend the STL (3/3)<em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></a></li> </ul> <h3><span style="color: #ff6600;">About Smart Output Iterators</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2017/11/28/output-iterator-adaptors-symmetry-range-adaptors/">Smart Output Iterators: A Symmetrical Approach to Range Adaptors</a></li> <li><a href="https://www.fluentcpp.com/2019/02/15/how-smart-output-iterators-fare-with-the-terrible-problem-of-incrementing-a-smart-iterator/">How Smart Output Iterators Avoid the TPOIASI</a></li> <li><a href="https://www.fluentcpp.com/2019/02/19/unzipping-collections-of-tuples-with-smart-output-iterators/">Unzipping a Collection of Tuples with the “unzip” Smart Output Iterator</a></li> <li><a href="https://www.fluentcpp.com/2019/02/22/applying-several-transforms-in-one-pass-on-a-collection/">Applying Several Transforms in One Pass on a Collection</a></li> <li><a href="https://www.fluentcpp.com/2019/02/26/is-unzip-a-special-case-of-transform/">Is Unzip a Special Case of Transform?</a></li> <li><a href="https://www.fluentcpp.com/2019/03/01/partitioning-data-with-output-iterators-in-cpp/">Partitioning Data with Output Iterators in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/03/12/the-demultiplexer-iterator-routing-data-to-any-numbers-of-outputs/">The Demultiplexer Iterator: Routing Data to Any Numbers of Outputs</a></li> <li><a href="https://www.fluentcpp.com/2019/03/15/performance-benchmark-ranges-vs-stl-algorithms-vs-smart-output-iterators/">Performance benchmark: Ranges VS STL algorithms VS Smart output iterators</a></li> </ul> <h3 id="data-structures"><span style="color: #ff6600;">About Data Structures</span></h3> <ul> <li>Heaps and Priority Queues in C++ – Part 1: <a href="https://www.fluentcpp.com/2018/03/13/heaps-priority-queues-stl-part-1/">Heaps Basics</a></li> <li>Heaps and Priority Queues in C++ – Part 2: <a href="https://www.fluentcpp.com/2018/03/16/heaps-cpp-stl/">The STL Algorithms on Heaps</a></li> <li>Heaps and Priority Queues in C++ – Part 3: <a href="https://www.fluentcpp.com/2018/03/20/heaps-and-priority-queues-in-c-part-3-queues-and-priority-queues/">Queues and Priority Queues</a></li> <li>Heaps and Priority Queues in C++ – Part 4: <a href="https://www.fluentcpp.com/2018/03/23/3428/">What Heaps Can Do That Priority Queues Don’t</a></li> </ul> <h3 id="boost"><span style="color: #ff6600;">About Boost</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2018/01/26/introduction-boost-phoenix/">Introduction to Boost Phoenix</a></li> <li><a href="https://www.fluentcpp.com/2018/02/23/introduction-boost-karma/">Introduction to Boost Karma</a></li> <li><em>The BooSTL Algorithms: Boost Algorithms That Extend the STL (1/3): Sorting and partitioning <span style="line-height: 1.5;"><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></span></em></li> <li><em>The BooSTL Algorithms: Boost Algorithms That Extend the STL (2/3): Searching <span style="line-height: 1.5;"><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></span></em></li> <li><i>The BooSTL Algorithms: Boost Algorithms That Extend the STL (3/3): The other BooSTL algorithms </i><span style="line-height: 1.5;"><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></span></li> </ul> <h3 id="wordcounts"><span style="color: #ff6600;">About Word Counts in Code</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2018/10/09/3-things-that-counting-words-can-reveal-on-your-code/">3 Things That Counting Words Can Reveal on Your Code</a></li> <li><a href="https://www.fluentcpp.com/2018/10/12/word-counting-cpp-simple-word-counter/">Word Counting in C++: Implementing a Simple Word Counter</a></li> <li><a href="https://www.fluentcpp.com/2018/10/16/word-counting-cpp-camelcase/">Word Counting in C++: Extracting words from camelCase symbols</a></li> <li><a href="https://www.fluentcpp.com/2018/10/19/word-counting-in-cpp-parametrizing-the-type-of-case/">Word Counting in C++: Parametrizing the Type of Case</a></li> <li><a href="https://www.fluentcpp.com/2018/10/23/word-counting-span/">Word Counting in C++: Computing the Span of a Word</a></li> </ul> <h3 id="refactoring"><span style="color: #ff6600;">About Refactoring</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2017/04/28/extract-interface-cpp/" target="_blank" rel="noopener noreferrer">The “Extract Interface” refactoring, at compile time</a></li> </ul> <h3 id="templates"><span style="color: #ff6600;">About Templates</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2017/05/12/curiously-recurring-template-pattern/" target="_blank" rel="noopener noreferrer">The Curiously Recurring Template Pattern (CRTP)</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/05/16/what-the-crtp-brings-to-code/" target="_blank" rel="noopener noreferrer">What the Curiously Recurring Template Pattern can bring to your code</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/05/19/crtp-helper/" target="_blank" rel="noopener noreferrer">An implementation helper for the Curiously Recurring Template Pattern</a></li> <li><a href="https://www.fluentcpp.com/2017/06/02/write-template-metaprogramming-expressively/" target="_blank" rel="noopener noreferrer">Expressive C++ Template Metaprogramming</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/11/how-to-do-partial-template-specialization-in-c/" target="_blank" rel="noopener noreferrer">Template Partial Specialization In C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/08/15/function-templates-partial-specialization-cpp/" target="_blank" rel="noopener noreferrer">Function template Partial Specialization In C++</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2017/12/12/mixin-classes-yang-crtp/" target="_blank" rel="noopener noreferrer">Mixin Classes: The Yang of the CRTP</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/05/15/make-sfinae-pretty-1-what-value-sfinae-brings-to-code/">How to Make SFINAE Pretty – Part 1: What SFINAE Brings to Code</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/05/18/make-sfinae-pretty-2-hidden-beauty-sfinae/">How to Make SFINAE Pretty – Part 2: the Hidden Beauty of SFINAE</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></li> <li><a href="https://www.fluentcpp.com/2018/05/22/how-to-transform-a-hierarchy-of-virtual-methods-into-a-crtp/">How to Turn a Hierarchy of Virtual Methods into a CRTP</a></li> <li><a href="https://www.fluentcpp.com/2018/06/22/variadic-crtp-opt-in-for-class-features-at-compile-time/">Variadic CRTP: An Opt-in for Class Features, at Compile Time</a></li> <li><a href="https://www.fluentcpp.com/2018/06/26/variadic-crtp-packs-from-opt-in-skills-to-opt-in-skillsets/">Variadic CRTP Packs: From Opt-in Skills to Opt-in Skillsets</a></li> <li><a href="https://www.fluentcpp.com/2018/07/03/how-to-reduce-the-code-bloat-of-a-variadic-crtp/">How to Reduce the Code Bloat of a Variadic CRTP</a></li> <li><a href="https://www.fluentcpp.com/2018/08/10/template-default-arguments-application-smart-iterators/">Default Parameters With Default Template Type Parameters</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2018/08/28/removing-duplicates-crtp-base-classes/">Removing Duplicates in C++ CRTP Base Classes</a> (by Sergio Adán)</li> <li><a href="https://www.fluentcpp.com/2018/11/02/variable-number-compile-time/">How to Store a Variable Number of Objects Known at Compile Time in C++</a></li> <li><a href="https://www.fluentcpp.com/2019/01/25/variadic-number-function-parameters-type/">How to Define A Variadic Number of Arguments of the Same Type – Part 1</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/01/29/how-to-define-a-variadic-number-of-arguments-of-the-same-type-part-2/">How to Define A Variadic Number of Arguments of the Same Type – Part 2</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> <li><a href="https://www.fluentcpp.com/2019/02/05/how-to-define-a-variadic-number-of-arguments-of-the-same-type-part-3/">How to Define A Variadic Number of Arguments of the Same Type – Part 3</a><em><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/></em></li> </ul> <h3 id="challenges"><span style="color: #ff6600;">Challenges for the most expressive code</span></h3> <ul> <li><a href="https://www.fluentcpp.com/2016/12/19/can-you-write-expressive-code-christmas-break-challenge/" target="_blank" rel="noopener noreferrer"><span style="line-height: 1.5;">Can you write expressive code? – Christmas break challenge</span></a> – <a href="https://www.fluentcpp.com/2016/12/19/can-you-write-expressive-code-christmas-break-challenge/" target="_blank" rel="noopener noreferrer">Results</a></li> <li><a href="https://www.fluentcpp.com/2017/03/13/pi-day-challenge-for-the-most-expressive-code-results/" target="_blank" rel="noopener noreferrer">The Pi Day Challenge for the Most Expressive Code in C++</a> – <a href="https://www.fluentcpp.com/2017/03/13/pi-day-challenge-for-the-most-expressive-code-results/" target="_blank" rel="noopener noreferrer">Results</a></li> <li><a href="https://www.fluentcpp.com/2017/07/18/can-you-wield-cpp-function-overloading-like-jon-snow-wields-longclaw/" target="_blank" rel="noopener noreferrer">Can You Wield Function Overloading Like Jon Snow Wields Longclaw?</a> – <a href="https://www.fluentcpp.com/2017/08/01/overloaded-functions-stl/" target="_blank" rel="noopener noreferrer">Results</a></li> <li><a href="https://www.fluentcpp.com/2017/09/25/expressive-cpp17-coding-challenge/" target="_blank" rel="noopener noreferrer">The Expressive C++17 Coding Challenge</a> – <a href="https://www.fluentcpp.com/2017/10/23/results-expressive-cpp17-coding-challenge/" target="_blank" rel="noopener noreferrer">Results</a></li> <li><a href="https://www.fluentcpp.com/2018/05/11/the-most-beautiful-piece-of-code-that-prints-42/">The Most Beautiful Piece of Code That Prints 42</a> (Towel Day celebration) – <a href="https://www.fluentcpp.com/2018/05/25/celebration-of-towel-day-with-your-awesome-pieces-of-code-that-print-42/">Results</a></li> </ul> <h3 id="meta-posts"><span style="color: #ff6600;">Meta posts</span></h3> <ul> <li><a href="https://www.fluentcpp.com/about-me/" target="_blank" rel="noopener noreferrer">About me</a></li> <li><a href="https://www.fluentcpp.com/2016/11/04/becoming-fluent-in-cpp/" target="_blank" rel="noopener noreferrer">Becoming Fluent in C++</a></li> <li><a href="https://www.fluentcpp.com/2016/11/15/how-i-came-to-create-fluent-c/" target="_blank" rel="noopener noreferrer">How I came to create Fluent C++</a></li> <li><a href="https://www.fluentcpp.com/2017/11/17/fluent-cpp-1-year-old/" target="_blank" rel="noopener noreferrer">Fluent C++ Is 1 Year Old</a></li> <li><a href="https://www.fluentcpp.com/2018/03/27/patreon-fluent-cpp/">Buy me a beer for Fluent C++</a></li> <li><a href="https://www.fluentcpp.com/2018/06/01/fluent-cpp-is-now-officially-open-to-guest-posting/">Fluent C++ is open to guest posting</a></li> <li><a href="https://www.fluentcpp.com/2018/11/16/fluent-cpp-is-2-years-old/">Fluent C++ is 2 Years Old</a></li> <li><a href="https://www.fluentcpp.com/2019/03/19/anna/">Anna</a></li> </ul> <p><em>The contents of this website are distributed under the Creative Commons license <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="noopener noreferrer">CC BY-NC-SA 4.0</a>, unless stated otherwise.</em></p> <div class="clear"></div></div></article> <section class="far f0 light farb"> <div class="wrp lfa"> <a href="https://www.fluentcpp.com/store"><img class="aligncenter size-full wp-image-6389" src="https://www.fluentcpp.com/wp-content/uploads/2017/02/banner_shop4.jpg" alt="" width="800" height="346"/><br /> <br /> </a></div></section> <article id="comments"> <div class="awr"> <div class="cmb" style="margin-left: 0px;" id="thrive_container_list_comments"></div></div></article> <div id="comment-bottom"></div><div class="clear"></div></div><footer> <div class="wrp"> <div class="fms"> <ul> <li> <a href="https://twitter.com/JoBoccara" target="_blank" class="twitter"></a> </li> </ul></div><div class="fmc"> <p> Copyright text 2018 by Fluent C++. - Designed by <a href="https://www.thrivethemes.com" target="_blank" style="text-decoration: underline;">Thrive Themes</a> | Powered by <a style="text-decoration: underline;" href="//www.wordpress.org" target="_blank">WordPress</a> </p></div></div></footer> </section> <div class="clear"></div><link wpfc-href='//fonts.googleapis.com/css?family=Roboto+Slab:400,700' rel='stylesheet' type='text/css'> <script id="thrive-main-script-js-extra">var ThriveApp={"ajax_url":"https:\/\/www.fluentcpp.com\/wp-admin\/admin-ajax.php","lazy_load_comments":"1","comments_loaded":"0","theme_uri":"https:\/\/www.fluentcpp.com\/wp-content\/themes\/voice","translations":{"ProductDetails":"Product Details"}};</script> <script id="tve-dash-frontend-js-extra">var tve_dash_front={"ajaxurl":"https:\/\/www.fluentcpp.com\/wp-admin\/admin-ajax.php","force_ajax_send":"1","is_crawler":"","recaptcha":[],"post_id":"816"};</script> <!--[if lt IE 9]><script src="//www.fluentcpp.com/wp-content/cache/wpfc-minified/ba104addca3e6889bd428fefe931ee80/9ubxy.js"></script><![endif]--> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.fluentcpp.com/posts/","url":"https://www.fluentcpp.com/posts/","name":"Posts - Fluent C++","isPartOf":{"@id":"https://www.fluentcpp.com/#website"},"primaryImageOfPage":{"@id":"https://www.fluentcpp.com/posts/#primaryimage"},"image":{"@id":"https://www.fluentcpp.com/posts/#primaryimage"},"thumbnailUrl":"https://www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png","datePublished":"2017-02-28T22:32:20+00:00","dateModified":"2019-05-08T12:06:34+00:00","description":"Here are all the posts published or planned on Fluent C++. I'm adding more, but let me know how I can enlarge this list with something super useful to you.","breadcrumb":{"@id":"https://www.fluentcpp.com/posts/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.fluentcpp.com/posts/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.fluentcpp.com/posts/#primaryimage","url":"https://www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png","contentUrl":"https://www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png"},{"@type":"BreadcrumbList","@id":"https://www.fluentcpp.com/posts/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.fluentcpp.com/"},{"@type":"ListItem","position":2,"name":"Posts"}]},{"@type":"WebSite","@id":"https://www.fluentcpp.com/#website","url":"https://www.fluentcpp.com/","name":"Fluent C++","description":"Jonathan Boccara's blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.fluentcpp.com/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"}]}</script> <script>window._wpemojiSettings={"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.fluentcpp.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.5.3"}}; !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);</script> <script src='//www.fluentcpp.com/wp-content/cache/wpfc-minified/btlw58o/9ubyi.js' type="text/javascript"></script> <script>var _thrive_share_no_params={'url': "https://www.fluentcpp.com/posts/"}; _thrive_share_no_params.twitter=true; jQuery(document).ready(function (){ ThriveApp.display_no_shares(_thrive_share_no_params); });</script> <script>_thriveCurrentPost=816;</script> <script defer src='//www.fluentcpp.com/wp-content/cache/wpfc-minified/rsppfk8/27fpn.js' type="text/javascript"></script> <script defer type="text/javascript" src="https://stats.wp.com/e-202423.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script id="jetpack-stats-js-after">_stq=window._stq||[]; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"214950964\",\"post\":\"816\",\"tz\":\"0\",\"srv\":\"www.fluentcpp.com\",\"j\":\"1:13.4.3\"}") ]); _stq.push([ "clickTrackerInit", "214950964", "816" ]);</script> <script>if(window.attachEvent){window.attachEvent('onload',wpfdr_google);}else if(window.addEventListener){window.addEventListener('load', wpfdr_google,false);}function wpfdr_google(){jQuery("link[wpfc-href]").each(function(i,e){jQuery(e).attr("href", jQuery(e).attr("wpfc-href"));});}</script> </body> </html><!-- WP Fastest Cache file was created in 0.33781886100769 seconds, on 03-06-24 7:39:54 -->