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&#039;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&#039;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&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/11bd501bb5da593c19aa7ae0b637649b?s=250&#038;d=mm&#038;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&amp;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&#039;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&#038;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&#8217;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&#038;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&#038;ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> &#8211; <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&#038;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&#038;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&#038;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&lt;T&gt;</a><img decoding="async" src="https://i0.wp.com/www.fluentcpp.com/wp-content/uploads/2017/09/daily-able-content.png?resize=30%2C30&#038;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&lt;T&gt;</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&#038;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&#038;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&#038;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&#038;ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> &#8211; <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&#038;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&#038;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&#038;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 &#8220;Hello, world&#8221; 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&#038;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&#038;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&#038;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 &#8220;super&#8221; 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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#8217;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&#038;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&#038;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&#038;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&#038;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/">&#8220;auto to stick&#8221; 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&#038;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&#038;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&#8217;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#8217;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 &#8220;Daily C++&#8221;</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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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 &#8211; 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&#038;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 &#8211; 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&#038;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 &#8211; 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&#038;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 &#8211; 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&#038;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 &#8211; 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&#038;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 &#8211; 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&#038;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 &#8211; 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 &#8211; 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&#038;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&#8217;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&#038;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 &lt;algorithm&gt;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&#038;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&#038;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&#038;ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> &#8211; <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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;ssl=1" alt="Dailies C++" width="30" height="30" data-recalc-dims="1"/> &#8211; <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&#038;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&#038;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 &lt;algorithm&gt;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&#038;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&#038;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&#038;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 &lt;algorithm&gt;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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/">&lt;algorithm&gt;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&#038;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&#038;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&#038;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&#038;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&#038;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&#8217;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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&#038;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> &#8211; <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> &#8211; <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> &#8211; <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> &#8211; <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) &#8211; <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++. &nbsp;&nbsp;-&nbsp;&nbsp;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&#039;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 -->

Pages: 1 2 3 4 5 6 7 8 9 10