1<!DOCTYPE html> 2<html lang="en-us"> 3 <head> 4 <meta charset="utf-8"> 5 <title>Start here - C++ Stories</title> 6 <meta name="generator" content="Hugo 0.107.0"> 7 <meta name="viewport" content="width=device-width, initial-scale=1"> 8 <meta name="author" content=""> 9 10 <meta name="description" content="Hello there! 11My name is Bartek and this is my technical blog. I write mostly about native coding in C++. 12You can read more about the blog itself in the About page. 13To see all blog posts please go to the Archive Page where you can sort by year, a tag or search."> 14 15 <meta name="keywords" content=""> 16 <meta property="og:site_name" content="C++ Stories"> 17 <meta property="og:title" content="Start here"> 18 <meta property="og:url" content="https://www.cppstories.com/p/start-here/"> 19 20 <meta property="og:image" content="https://www.cppstories.com/image/theme/og.png"> 21 22 23 <meta property="og:description" content="Hello there! 24My name is Bartek and this is my technical blog. I write mostly about native coding in C++. 25You can read more about the blog itself in the About page. 26To see all blog posts please go to the Archive Page where you can sort by year, a tag or search."> 27 28 <meta property="og:type" content="blog"> 29 <meta name="twitter:card" content="summary_large_image"> 30 <meta name="twitter:creator" content="@"> 31 <meta name="twitter:title" content="Start here"> 32 <meta name="twitter:url" content="https://www.cppstories.com/p/start-here/"> 33 34 <meta name="twitter:description" content="Hello there! 35My name is Bartek and this is my technical blog. I write mostly about native coding in C++. 36You can read more about the blog itself in the About page. 37To see all blog posts please go to the Archive Page where you can sort by year, a tag or search."> 38 39 40 <meta name="twitter:image:src" content="https://www.cppstories.com/image/theme/og.png"> 41 42 <link rel="shortcut icon" href="https://www.cppstories.com/image/theme/favicon.ico"> 43 44 45 <link rel="stylesheet" href="/css/pure-min.css"> 46 <link rel="stylesheet" href="/css/grids-responsive-min.css"> 47 48 49 <link rel="stylesheet" href="/css/bootstrap.min.css"> 50 51 <link rel="stylesheet" href="/css/style.css"> 52 53 <link rel="alternate" href="https://www.cppstories.com/index.xml" type="application/rss+xml" title="C++ Stories"> 54 55
55<script src="/js/jquery.min.js"></script>
55 56 57 58
58<script src="/js/bootstrap.min.js"></script>
58 59 60</head> 61 62 <body> 63 <div id="wrap" class="wrap"> 64 65 66<header class="navbar-fixed-top header" id="navbar-content"> 67 68 69 <div class="site-title"><a href="/">C++ Stories</a></div> 70 71 <p class="site-desc">Stay up-to-date with Modern C++</p> 72 73 74<nav class="navbar navbar-default navbar-custom"> 75 <div class="container-fluid"> 76 77 <div class="navbar-header page-scroll"> 78 <button type="button" class="navbar-toggle content-page" style="float:right;"> 79 <span class="sr-only">Toggle navigation</span> 80 <span class="icon-bar"></span> 81 <span class="icon-bar"></span> 82 <span class="icon-bar"></span> 83 </button> 84 <h1 class="mobile-title" style="float:left;padding-left:0.3em;"><a href="https://www.cppstories.com">C++ Stories</a></h1> 85 </div> 86 87 88 89 <div id="huxblog_navbar"> 90 <div class="navbar-collapse"> 91 <ul id="nav" class="nav navbar-nav navbar-center"> 92 <li class="nav-item"> 93 <a href="/"> 94 95 <svg width="1.5em" height="1.5em" viewBox="0 0 16 16" class="bi bi-house-door-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 96 <path d="M6.5 10.995V14.5a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .146-.354l6-6a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 .146.354v7a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5V11c0-.25-.25-.5-.5-.5H7c-.25 0-.5.25-.5.495z"/> 97 <path fill-rule="evenodd" d="M13 2.5V6l-2-2V2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5z"/> 98</svg> 99 100 </a> 101 </li> 102 <li class="nav-item"> 103 <a href="/p/start-here/">Start Here</a> 104 </li> 105 <li class="nav-item"> 106 <a href="/p/about/">Author</a> 107 </li> 108 <li class="nav-item"> 109 <a href="/p/resources/">Resources</a> 110 </li> 111 <li class="nav-item"> 112 <a href="/p/archive/">Archives</a> 113 </li> 114 <li class="nav-item"> 115 <a href="/p/privacy/">Privacy</a> 116 </li> 117 <li class="nav-item special"> 118 <a href="/p/extra-patreon-content/">Premium</a> 119 </li> 120 <li class="nav-item"> 121 <a target="_blank" href="https://leanpub.com/cpp17indetail?utm_source=blog&utm_campaign=topmenu">My Book</a> 122 </li> 123 124 </ul> 125 126 </div> 127 </div> 128 129 </div> 130 131</nav>
132<script> 133 134 var toggle = document.querySelector('.navbar-toggle'); 135 var navbar = document.querySelector('#huxblog_navbar'); 136 var collapse = document.querySelector('.navbar-collapse'); 137 138 139 $(function(){ 140 var current = location.pathname === '/' || location.pathname.includes('page') ? '/p/home' : location.pathname ; 141 $('#nav li a').each(function(){ 142 var $this = $(this); 143 var attrHref = $this.attr('href') === '/' || $this.attr('href').includes('page') ? '/p/home' : $this.attr('href') ; 144 145 if(attrHref.indexOf(current) !== -1){ 146 $this.addClass('active'); 147 } 148 }) 149}) 150 151 152 window.addEventListener('resize', function(){ 153 if(window.matchMedia("(max-width:768px)").matches) { 154 collapse.style.display = "none" 155 156 if(document.getElementById("navbar-home")) { 157 document.getElementById("navbar-home").style.top = "0"; 158 } else { 159 document.getElementById("navbar-content").style.top = "0"; 160 } 161 } 162 else { 163 collapse.style.display = "block" 164 } 165 }) 166 167 168 toggle.addEventListener('click', handleMagic) 169 function handleMagic(e){ 170 e.preventDefault(); 171 if (navbar.className.indexOf('in') > 0) { 172 173 navbar.className = " "; 174 175 setTimeout(function(){ 176 177 if(navbar.className.indexOf('in') < 0 ) { 178 collapse.style.display = "none" 179 } 180 },100) 181 } else { 182 183 collapse.style.display = "block" 184 navbar.className += " in"; 185 } 186 } 187</script>
187 188 189 190 <div class="share"> 191 <a href="https://www.cppstories.com/index.xml" target="blank"> 192 <svg viewBox="0 0 72 72" ><g fill="none" fill-rule="evenodd"><path d="M8,72 L64,72 C68.418278,72 72,68.418278 72,64 L72,8 C72,3.581722 68.418278,-8.11624501e-16 64,0 L8,0 C3.581722,8.11624501e-16 -5.41083001e-16,3.581722 0,8 L0,64 C5.41083001e-16,68.418278 3.581722,72 8,72 Z" fill="#FF9A00"/><path d="M14.0004714,51.7142857 C14.0004714,48.243 16.8148698,45.4285714 20.2861184,45.4285714 C23.7573669,45.4285714 26.5717653,48.243 26.5717653,51.7142857 C26.5717653,55.1855714 23.7573669,58 20.2861184,58 C16.8148698,58 14.0004714,55.1855714 14.0004714,51.7142857 Z M58,58 L49.6196612,58 C49.6196612,38.3587143 33.6415467,22.3804286 14.0004714,22.3804286 L14.0004714,14 C38.2614972,14 58,33.7387143 58,58 Z M43.3335429,58 L34.9532041,58 C34.9532041,46.4468571 25.5530191,37.0481429 14,37.0481429 L14,28.6661429 C30.174541,28.6661429 43.3335429,41.8252857 43.3335429,58 Z" fill="#FFF"/></g></svg> 193 </a> 194 <a href="https://twitter.com/fenbf" target="_blank"> 195 <svg viewBox="0 0 512 512" ><g><path d="M448,512l-384,0c-35.328,0 -64,-28.672 -64,-64l0,-384c0,-35.328 28.672,-64 64,-64l384,0c35.328,0 64,28.672 64,64l0,384c0,35.328 -28.672,64 -64,64Z" id="Dark_Blue" style="fill:#1da1f2;fill-rule:nonzero;"/><path d="M196.608,386.048c120.704,0 186.752,-100.096 186.752,-186.752c0,-2.816 0,-5.632 -0.128,-8.448c12.8,-9.216 23.936,-20.864 32.768,-34.048c-11.776,5.248 -24.448,8.704 -37.76,10.368c13.568,-8.064 23.936,-20.992 28.928,-36.352c-12.672,7.552 -26.752,12.928 -41.728,15.872c-12.032,-12.8 -29.056,-20.736 -47.872,-20.736c-36.224,0 -65.664,29.44 -65.664,65.664c0,5.12 0.64,10.112 1.664,14.976c-54.528,-2.688 -102.912,-28.928 -135.296,-68.608c-5.632,9.728 -8.832,20.992 -8.832,33.024c0,22.784 11.648,42.88 29.184,54.656c-10.752,-0.384 -20.864,-3.328 -29.696,-8.192l0,0.896c0,31.744 22.656,58.368 52.608,64.384c-5.504,1.536 -11.264,2.304 -17.28,2.304c-4.224,0 -8.32,-0.384 -12.288,-1.152c8.32,26.112 32.64,45.056 61.312,45.568c-22.528,17.664 -50.816,28.16 -81.536,28.16c-5.248,0 -10.496,-0.256 -15.616,-0.896c28.928,18.432 63.488,29.312 100.48,29.312" id="Logo__x2014__FIXED" style="fill:#fff;fill-rule:nonzero;"/></g></svg> 196 </a> 197 <a href="https://www.linkedin.com/in/bartlomiejfilipek" target="_blank"> 198 <svg viewBox="0 0 32 32" ><g><path d="M32,30c0,1.104-0.896,2-2,2H2c-1.104,0-2-0.896-2-2V2c0-1.104,0.896-2,2-2h28c1.104,0,2,0.896,2,2V30z" fill="#007BB5"/><g><rect fill="#FFFFFF" height="14" width="4" x="7" y="11"/><path d="M20.499,11c-2.791,0-3.271,1.018-3.499,2v-2h-4v14h4v-8c0-1.297,0.703-2,2-2c1.266,0,2,0.688,2,2v8h4v-7 C25,14,24.479,11,20.499,11z" fill="#FFFFFF"/><circle cx="9" cy="8" fill="#FFFFFF" r="2"/></g></g><g/><g/><g/><g/><g/><g/></svg> 199 </a> 200 </div> 201 202 <div class="searchbox"> 203 <form action="https://duckduckgo.com/" method="get"> 204 <input type="hidden" name="sites" value="cppstories.com"> 205 <input type="search" name="q" placeholder="Search..."> 206 <input type="submit" name="submit" class="submit" value="Search"> 207 </form> 208 </div> 209 210 <div class="theme-switch-wrapper"><label class="theme-switch indicate" for="checkbox"><input type="checkbox" id="checkbox" /> <i></i> </label> </div> 211 212</header> 213 214 215
216<script> 217 218 var prevScrollpos = window.pageYOffset; 219 window.onscroll = function() { 220 221 if( $('.navbar-collapse').is(':hidden') ) 222 return; 223 224 var y = window.scrollY; 225 var currentScrollPos = window.pageYOffset; 226 if (prevScrollpos > currentScrollPos && y < 100) { 227 if(document.getElementById("navbar-home")) { 228 document.getElementById("navbar-home").style.top = "0"; 229 } else { 230 document.getElementById("navbar-content").style.top = "0"; 231 } 232 233 document.getElementsByClassName("right-panel")[0].style.top = '125px' 234 document.getElementsByClassName("left-panel")[0].style.top = '125px' 235 } else { 236 if(document.getElementById("navbar-home")) { 237 document.getElementById("navbar-home").style.top = "-70px"; 238 } else { 239 document.getElementById("navbar-content").style.top = "-70px"; 240 } 241 242 document.getElementsByClassName("right-panel").length > 0 ? document.getElementsByClassName("right-panel")[0].style.top = '50px' : null; 243 document.getElementsByClassName("left-panel").length > 0 ? document.getElementsByClassName("left-panel")[0].style.top = '50px' : null; 244 } 245 prevScrollpos = currentScrollPos; 246 } 247 248 249const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); 250 251const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null; 252 253if (currentTheme) { 254 document.documentElement.setAttribute('data-theme', currentTheme); 255 256 if (currentTheme === 'dark') { 257 toggleSwitch.checked = true; 258 } 259} 260 261function switchTheme(e) { 262 if (e.target.checked) { 263 document.documentElement.setAttribute('data-theme', 'dark'); 264 localStorage.setItem('theme', 'dark'); 265 } 266 else { 267 document.documentElement.setAttribute('data-theme', 'light'); 268 localStorage.setItem('theme', 'light'); 269 } 270} 271 272toggleSwitch.addEventListener('change', switchTheme, false); 273 274 275 276</script>
276 277 278 279<main class="main main--single"> 280 281 <article class="post"> 282 <div class="mobile-banner"> 283 <a href="https://leanpub.com/cpp17indetail?utm_source=blog&utm_campaign=adside"> 284 <img src="/images/cpp17indetailtop2.png"> 285 </a> 286 </div> 287 <div class="post-content"> 288 <h1 class="post__title static"><a href="."> Start here </a> </h1> 289 290 <div class="toc-post-top"> 291 292 Contents 293 <nav id="TableOfContents"> 294 <ul> 295 <li><a href="#c">C++</a> 296 <ul> 297 <li><a href="#c26">C++26</a></li> 298 <li><a href="#c23">C++23</a></li> 299 <li><a href="#c20">C++20</a></li> 300 <li><a href="#c17">C++17</a></li> 301 <li><a href="#other-c-articles">Other C++ Articles</a></li> 302 <li><a href="#status">Status</a></li> 303 </ul> 304 </li> 305 <li><a href="#opengl--gpu">OpenGL & GPU</a></li> 306 <li><a href="#performance">Performance</a></li> 307 <li><a href="#projects">Projects</a> 308 <ul> 309 <li><a href="#flexible-particle-system">Flexible Particle System</a></li> 310 </ul> 311 </li> 312 <li><a href="#book-reviews">Book Reviews</a></li> 313 <li><a href="#other">Other</a></li> 314 <li><a href="#blogging-and-stats">Blogging and stats</a></li> 315 </ul> 316</nav> 317 318 </div> 319 320 321 322 323 <p>Hello there!</p> 324<p>My name is Bartek and this is my technical blog. I write mostly about native coding in C++.</p> 325<p>You can read more about the blog itself in <a href="http://www.cppstories.com/p/about.html">the About page</a>.</p> 326<p>To see all blog posts please go to the <a href="https://www.cppstories.com/p/archive/">Archive Page</a> where you can sort by year, a tag or search.</p> 327<p>Here are the top stories that you might want to read first:</p> 328<blockquote class="hint info"> 329 330 Last updated in September 2026. The C++ sections below are ordered from the newest standard to the oldest one. 331</blockquote> 332<h2 id="c"> 333C++ 334 335<a class="hash-link" href="#c" aria-hidden="true"> 336<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 337 </a> 338 339</h2> 340 341<p>I use C++ on a daily basis, so thatâs why it dominates my blog posts.</p> 342<h3 id="c26"> 343C++26 344 345<a class="hash-link" href="#c26" aria-hidden="true"> 346<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 347 </a> 348 349</h3> 350 351<p>As of late 2026, C++26 is almost ready, here are some early experiments:</p> 352<ul> 353<li><a href="https://www.cppstories.com/2025/cpp26-safety-temp/">Improving Code Safety in C++26: Managers and Dangling References</a></li> 354<li><a href="https://www.cppstories.com/2025/join_concat_ranges/">How to join or concat ranges, C++26</a></li> 355<li><a href="https://www.cppstories.com/2025/structured-bindings-cpp26-updates/">Structured bindings in C++17, 8 years later</a></li> 356<li><a href="https://www.cppstories.com/2026/hardening-experiments/">C++26: Standard Library Hardening Experiments</a></li> 357</ul> 358<h3 id="c23"> 359C++23 360 361<a class="hash-link" href="#c23" aria-hidden="true"> 362<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 363 </a> 364 365</h3> 366 367<ul> 368<li><a href="https://www.cppstories.com/2024/cpp23_lang/">C++23 Language Features and Reference Cards</a></li> 369<li><a href="https://www.cppstories.com/2024/cpp23_lib/">C++23 Library Features and Reference Cards</a></li> 370<li><a href="https://www.cppstories.com/2024/cpp23_more_examples/">8 More C++23 Examples</a></li> 371<li><a href="https://www.cppstories.com/2024/expected-cpp23/">Using <code>std::expected</code> from C++23</a></li> 372<li><a href="https://www.cppstories.com/2025/cpp23_mdspan/">Details of <code>std::mdspan</code> from C++23</a></li> 373<li><a href="https://www.cppstories.com/2025/ranges_split_chunk/">How to Split Ranges in C++23</a></li> 374<li><a href="https://www.cppstories.com/2026/stacktrace/">Practical <code>std::stacktrace</code> in C++23</a></li> 375</ul> 376<p>And see a growing list of articles under the C++23 tag in the Archives:</p> 377<p><a href="https://www.cppstories.com/tags/cpp23/">Cpp23 - C++ Stories</a></p> 378<h3 id="c20"> 379C++20 380
381<a class="hash-link" href="#c20" aria-hidden="true"> 382<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 383 </a> 384 385</h3> 386 387<ul> 388<li><a href="https://www.cppstories.com/2022/ranges-composition/">C++20 Ranges: The Key Advantage - Algorithm Composition - C++ Stories</a></li> 389<li><a href="https://www.cppstories.com/2022/20-smaller-cpp20-features/">20 Smaller yet Handy C++20 Features - C++ Stories</a></li> 390<li><a href="https://www.cppstories.com/2021/concepts-callables/">Predefined C++20 Concepts: Callables</a></li> 391<li><a href="https://www.cppstories.com/2021/concepts-intro/">C++20 Concepts - a Quick Introduction</a></li> 392<li><a href="https://www.cppstories.com/2018/03/ifconstexpr/">Simplify Code with if constexpr and Concepts in C++17/C++20</a></li> 393<li><a href="https://www.cppstories.com/2021/constexpr-new-cpp20/">constexpr Dynamic Memory Allocation, C++20</a></li> 394<li><a href="https://www.cppstories.com/2020/10/complex-ranges-algorithms.html/">Increased Complexity of C++20 Range Algorithms Declarations - Is It Worth?</a></li> 395<li><a href="https://www.cppstories.com/2020/08/string-prefix-cpp20.html/">How to Check String or String View Prefixes and Suffixes in C++20</a></li> 396<li><a href="https://www.cppstories.com/2020/08/lambda-syntax.html/">Lambda Week: Syntax changes, C++11 to C++20</a></li> 397<li><a href="https://www.cppstories.com/2016/02/notes-on-c-sfinae/">Notes on C++ SFINAE, Modern C++ and C++20 Concepts</a></li> 398<li><a href="https://www.cppstories.com/2020/02/extra-format-cpp20.html/">An Extraterrestrial Guide to C++20 Text Formatting</a></li> 399</ul> 400<p>And see a growing list of articles under the C++20 tag in the Archives:</p> 401<p><a href="https://www.cppstories.com/tags/cpp20/">Cpp20 - C++ Stories</a></p> 402<h3 id="c17"> 403C++17 404 405<a class="hash-link" href="#c17" aria-hidden="true"> 406<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 407 </a> 408 409</h3> 410 411<p>Here’s a mega long article, with all of the features (each with a description and an example):</p> 412<ul> 413<li><a href="http://www.cppstories.com/2017/01/cpp17features.html">C++17 Features</a></li> 414</ul> 415<p>And another article on smaller features:</p> 416<ul> 417<li><a href="https://www.cppstories.com/2019/08/17smallercpp17features/">17 Smaller but Handy C++17 Features - C++ Stories</a></li> 418</ul> 419<p>The first series about the features:</p> 420<ul> 421<li><a href="http://www.cppstories.com/2017/05/cpp17-details-fixes-deprecation.html">Fixes and deprecation</a></li> 422<li><a href="http://www.cppstories.com/2017/06/cpp17-details-clarifications.html">Language clarification</a></li> 423<li><a href="http://www.cppstories.com/2017/06/cpp17-details-templates.htm">Templates</a></li> 424<li><a href="http://www.cppstories.com/2017/07/cpp17-in-details-attributes.html">Attributes</a></li> 425<li><a href="http://www.cppstories.com/2017/07/cpp17-details-simplifications.html">Simplification</a></li> 426<li><a href="http://www.cppstories.com/2017/08/cpp17-details-filesystem.html">Library changes - Filesystem</a></li> 427<li><a href="http://www.cppstories.com/2017/08/cpp17-details-parallel.html">Library changes - Parallel STL</a></li> 428<li><a href="http://www.cppstories.com/2017/09/cpp17-details-utils.html">Library changes - Utils</a></li> 429<li><a href="http://www.cppstories.com/2017/09/c17-in-detail-summary-bonus.html">Wrap up, Bonus</a> - with a free ebook! :)</li> 430</ul> 431<p>The Second series about the STL changes:</p> 432<ul> 433<li><a href="https://www.cppstories.com/2018/04/refactoring-with-c17-stdoptional.html">Refactoring with <code>std::optional</code></a></li> 434<li><a href="https://www.cppstories.com/2018/05/using-optional.html">Using <code>std::optional</code></a></li> 435<li><a href="https://www.cppstories.com/2018/05/errors-and-optional.html">Error handling and <code>std::optional</code></a></li> 436<li><a href="https://www.cppstories.com/2018/06/variant.html">About<code>std::variant</code></a></li> 437<li><a href="https://www.cppstories.com/2018/06/any.html">About<code>std::any</code></a></li> 438<li><a href="https://www.cppstories.com/2018/07/in-place-cpp17.html">In place construction for <code>std::optional</code>, <code>std::variant</code> and <code>std::any</code></a></li> 439<li><a href="https://www.cppstories.com/2018/07/string-view-perf.html"><code>std::string_view</code> Performance</a></li> 440<li><a href="https://www.cppstories.com/2018/08/searchers.html">C++17 string searchers</a></li> 441<li>Conversion utilities</li> 442<li>Working with <code>std::filesystem</code></li> 443<li>Extra: 444<ul> 445<li><a href="https://www.cppstories.com/2018/05/optional-contest.html">
445Show me your code: <code>std::optional</code></a></li> 446<li><a href="https://www.cppstories.com/2018/05/optional-contest-results.html">Results: Show me your core: <code>std::optional</code></a></li> 447<li><a href="https://www.cppstories.com/2018/07/menu-cpp17-example.html">Menu Class - Example of Modern C++17 STL features</a></li> 448</ul> 449</li> 450<li><a href="https://www.cppstories.com/2020/04/variant-virtual-polymorphism.html/">Runtime Polymorphism with std::variant and std::visit</a></li> 451</ul> 452<h3 id="other-c-articles"> 453Other C++ Articles 454 455<a class="hash-link" href="#other-c-articles" aria-hidden="true"> 456<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 457 </a> 458 459</h3> 460 461<ul> 462<li><a href="https://www.cppstories.com/2021/filter-cpp-containers/">12 Different Ways to Filter Containers in Modern C++</a></li> 463<li><a href="http://www.cppstories.com/2016/02/notes-on-c-sfinae.html">Notes on C++ SFINAE</a></li> 464<li><a href="http://www.cppstories.com/2016/04/custom-deleters-for-c-smart-pointers.html">Custom Deleters for C++ Smart Pointers</a></li> 465<li><a href="http://www.cppstories.com/2013/02/smart-pointers-gotchas.html">Smart pointers gotchas</a></li> 466<li><a href="http://www.cppstories.com/2014/12/top-5-beautiful-c-std-algorithms.html">Top 5 Beautiful C++ std Algorithms Examples</a></li> 467<li><a href="http://www.cppstories.com/2015/02/non-static-data-members-initialization.html">Non Static Data Members Initialization</a></li> 468<li><a href="http://www.cppstories.com/2016/06/11-debugging-tips-that-will-save-your.html">11 Debugging Tips That Will Save Your Time</a></li> 469<li><a href="http://www.cppstories.com/2013/02/why-is-it-building-so-long.html">Why is it building so long?</a></li> 470<li><a href="http://www.cppstories.com/2016/06/c-core-coding-guidelines.html">C++ (Core) Coding Guidelines</a></li> 471<li><a href="http://www.cppstories.com/2014/01/tasks-with-stdfuture-and-stdasync.html">Tasks with std::future and std::async</a></li> 472<li><a href="http://www.cppstories.com/2013/05/auto-keyword-in-cpp11.html">Auto keyword in C++11</a></li> 473<li><a href="http://www.cppstories.com/2016/04/visual-studio-productivity-tips.html">Visual Studio C++ Productivity Tips</a></li> 474<li><a href="http://www.cppstories.com/2014/07/quick-case-char-pointer-vs-char-array.html">Quick case: Char Pointer vs Char Array in C++</a></li> 475<li><a href="http://www.cppstories.com/2013/03/include-little-toolkit.html">#Include little toolkit</a></li> 476<li><a href="http://www.cppstories.com/2013/03/forward-declaration-and-pointer.html">Forward Declaration And a Pointer</a></li> 477</ul> 478<h3 id="status"> 479Status 480 481<a class="hash-link" href="#status" aria-hidden="true"> 482<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 483 </a> 484 485</h3> 486 487<p>At the end of the year I write about C++ status. Those texts summarise the major events of a given year, compiler support of modern features, standard updates, and the general direction of the language.</p> 488<ul> 489<li><a href="https://www.cppstories.com/2022/cpp-status-2022/">C++ at the end of 2022</a></li> 490<li><a href="https://www.cppstories.com/2021/cpp-status-2021/">C++ at the end of 2021</a></li> 491<li><a href="https://www.cppstories.com/2020/12/cpp-status-2020/">C++ Status at the end of 2020</a></li> 492<li><a href="https://www.cppstories.com/2019/12/cpp-status-2019.html/">C++ Status at the end of 2019</a></li> 493<li><a href="https://www.cppstories.com/2018/12/c-at-end-of-2018/">C++ Status at the end of 2018</a></li> 494<li><a href="http://www.cppstories.com/2017/12/cpp-status-2017.html">C++ Status at the end of 2017</a></li> 495<li><a href="http://www.cppstories.com/2016/12/c-status-at-end-of-2016.html">C++ Status at the end of 2016</a></li> 496<li><a href="http://www.cppstories.com/2015/12/c-status-at-end-of-2015.html">C++ Status at the end of 2015</a></li> 497<li><a href="http://www.cppstories.com/2014/12/c-status-at-end-of-2014.html">C++ Status at the end of 2014</a></li> 498<li><a href="http://www.cppstories.com/2013/12/c-status-at-end-of-2013.html">C++ Status at the end of 2013</a></li> 499<li><a href='http://www.cppstories.com/2012/12/c-at-end-of-2012.html/'>C++ Status at the end of 2012</a></li> 500</ul> 501<h2 id="opengl--gpu"> 502OpenGL & GPU 503
504<a class="hash-link" href="#opengl--gpu" aria-hidden="true"> 505<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 506 </a> 507 508</h2> 509 510<ul> 511<li><a href="http://www.cppstories.com/2015/01/persistent-mapped-buffers-in-opengl.html">Persistent Mapped Buffers in OpenGL</a></li> 512<li><a href="http://www.cppstories.com/2015/01/persistent-mapped-buffers-benchmark.html">Persistent Mapped Buffers, Benchmark Results</a></li> 513<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-opengl-renderer.html">Flexible particle system - OpenGL Renderer</a></li> 514<li><a href="http://www.cppstories.com/2014/08/opengl-45.html">OpenGL 4.5</a></li> 515<li><a href="http://www.codeproject.com/Articles/771225/Learning-Modern-OpenGL">Learning Modern OpenGL</a> @Codeproject - one of my best articles, that landed on external site instead of this blog.</li> 516<li><a href="http://www.cppstories.com/2013/09/glgeneratemipmap-plus-soil-library.html">glGenerateMipmap Plus SOIL library, OpenGL</a></li> 517<li><a href="http://www.cppstories.com/2013/09/digging-into-soil-library-for-opengl.html">Digging into SOIL Library for OpenGL</a></li> 518<li><a href="http://www.cppstories.com/2012/07/the-spark-particle-library.html">The SPARK Particle Library</a></li> 519<li><a href='http://www.cppstories.com/2012/06/select-mouse-opengl.html/'>Select + Mouse + OpenGL</a></li> 520<li><a href="http://www.cppstories.com/2012/06/aniso.html">Quick example of Anisotropic Filtering in OpenGL</a></li> 521<li><a href='http://www.cppstories.com/2012/03/fps-limit.html/'>FPS limit</a></li> 522</ul> 523<h2 id="performance"> 524Performance 525 526<a class="hash-link" href="#performance" aria-hidden="true"> 527<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 528 </a> 529 530</h2> 531 532<ul> 533<li><a href="http://www.cppstories.com/2016/01/micro-benchmarking-libraries-for-c.html">Micro benchmarking libraries for C++</a></li> 534<li><a href="http://www.cppstories.com/2017/05/please-stop-with-performance.html">Please stop with performance optimizations!</a></li> 535<li><a href="http://www.cppstories.com/2017/05/curius-case-of-branch-performance.html">Curious case of branch performance</a></li> 536<li><a href="http://www.cppstories.com/2017/04/packing-bools.html">Packing Bools, Performance tests</a></li> 537<li><a href="http://www.cppstories.com/2016/05/google-benchmark-library.html">Google benchmark library</a></li> 538<li><a href="http://www.cppstories.com/2016/01/simple-performance-timer.html">Simple Performance Timer</a></li> 539<li><a href="http://www.cppstories.com/2014/05/vector-of-objects-vs-vector-of-pointers.html">Vector of Objects vs Vector of Pointers Updated</a></li> 540<li><a href='http://www.cppstories.com/2012/05/float-vs-double.html/'>Float vs Double</a></li> 541<li><a href="http://www.cppstories.com/2012/03/avx-start.html">AVX Start</a></li> 542</ul> 543<h2 id="projects"> 544Projects 545 546<a class="hash-link" href="#projects" aria-hidden="true"> 547<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 548 </a> 549 550</h2> 551 552<ul> 553<li><a href="http://www.cppstories.com/2016/03/the-matrix-updated.html">The Matrix Updated</a></li> 554<li><a href="http://www.cppstories.com/2014/01/simple-water-simulation.html">Simple Water Simulation</a></li> 555<li><a href="http://www.cppstories.com/2013/09/glgeneratemipmap-plus-soil-library.html">glGenerateMipmap Plus SOIL library, OpenGL</a></li> 556<li><a href="http://www.cppstories.com/2012/12/opengl-startup-v30.html">OpenGL startup V3.0</a></li> 557</ul> 558<h3 id="flexible-particle-system"> 559Flexible Particle System 560
561<a class="hash-link" href="#flexible-particle-system" aria-hidden="true"> 562<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 563 </a> 564 565</h3> 566 567<p>Iâve always wanted to create efficient and easy to use particle system. Iâve described my attempts to do it in the following series:</p> 568<ul> 569<li><a href="http://www.cppstories.com/2014/03/three-particle-effects.html">Initial Particle Demo</a></li> 570<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-start.html">Introduction</a></li> 571<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-container.html">Particle Container 1 - problems</a></li> 572<li><a href="http://www.cppstories.com/2014/04/flexible-particle-system-container-2.html">Particle Container 2 - implementation</a></li> 573<li><a href="http://www.cppstories.com/2014/05/flexible-particle-system-emitter-and.html">Generators & Emitters</a></li> 574<li><a href="http://www.cppstories.com/2014/06/flexible-particle-system-updaters.html">Updaters</a></li> 575<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-opengl-renderer.html">Renderer</a></li> 576<li><a href="http://www.cppstories.com/2014/07/flexible-particle-system-how-to-start.html">Introduction to Software Optimization</a></li> 577<li><a href="http://www.cppstories.com/2014/09/flexible-particle-system-tools.html">Tools Optimizations</a></li> 578<li><a href="http://www.cppstories.com/2014/10/flexible-particle-system-code.html">Code Optimizations</a></li> 579<li><a href="http://www.cppstories.com/2015/03/flexible-particle-system-renderer.html">Renderer Optimizations</a></li> 580<li><a href="http://www.cppstories.com/2015/04/flexible-particle-system-summary.html">Summary</a></li> 581</ul> 582<h2 id="book-reviews"> 583Book Reviews 584 585<a class="hash-link" href="#book-reviews" aria-hidden="true"> 586<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 587 </a> 588 589</h2> 590 591<ul> 592<li><a href="https://www.cppstories.com/2018/09/procpp4th/">Professional C++ 4th Edition</a> by Marc Gregoire</li> 593<li><a href="https://www.cppstories.com/2018/05/tmplbook2nd-review/">C++ Templates - The Complete Guide 2nd Edition</a> by David Vandevoorde, Nicolai M. Josuttis and Douglas Gregor</li> 594<li><a href="http://www.cppstories.com/2017/07/complete-software-developers.html">The Complete Software Developerâs Career Guide, by John Sonmez</a></li> 595<li><a href="http://www.cppstories.com/2017/06/modern-c-programming-cookbook-review.html">Modern C++ Programming Cookbook Review by Marius Bancila</a></li> 596<li><a href="http://www.cppstories.com/2016/12/async-remote-book-review.html">Async Remote Book</a></li> 597<li><a href="http://www.cppstories.com/2016/07/7-books.html">7 books that taught me how to code</a></li> 598<li><a href="http://www.cppstories.com/2015/08/opengl-superbible-7th.html">OpenGL SuperBible 7th</a></li> 599<li><a href="http://www.cppstories.com/2015/03/soft-skills-book-review.html">Soft Skills - Book Review</a></li> 600<li><a href="http://www.cppstories.com/2014/08/review-of-d-cookbook.html">Review of âD Cookbookâ</a></li> 601<li><a href="http://www.cppstories.com/2013/12/the-passionate-programmer.html">The Passionate Programmer</a></li> 602<li><a href="http://www.cppstories.com/2013/08/book-opengl-development-cookbook.html">Book: OpenGL Development Cookbook</a></li> 603<li><a href="http://www.cppstories.com/2013/05/book-c-standard-library-2nd.html">Book: The C++ Standard Library, 2nd</a></li> 604</ul> 605<h2 id="other"> 606Other 607
608<a class="hash-link" href="#other" aria-hidden="true"> 609<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 610 </a> 611 612</h2> 613 614<ul> 615<li><a href="http://www.cppstories.com/2016/05/coding-without-google.html">Coding without Google</a></li> 616</ul> 617<h2 id="blogging-and-stats"> 618Blogging and stats 619 620<a class="hash-link" href="#blogging-and-stats" aria-hidden="true"> 621<svg class="fill-current o-60 hover-accent-color-light" height="24" viewBox="0 0 24 24" width="22" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path d="M0 0h24v24H0z" fill="none"></path><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76.0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71.0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71.0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76.0 5-2.24 5-5s-2.24-5-5-5z"></path></svg> 622 </a> 623 624</h2> 625 626<ul> 627<li><a href="http://www.cppstories.com/2016/12/2016-blog-summary.html">2016 Blog Summary</a></li> 628<li><a href="http://www.cppstories.com/2016/07/code-and-graphics-in-mid-2016.html">Code And Graphics in Mid 2016</a></li> 629<li><a href="http://www.cppstories.com/2014/12/code-and-graphics-in-2014.html">Code And Graphics in 2014</a></li> 630</ul> 631 632 </div> 633 </article> 634 635 <aside class="left-panel"> 636 637 Contents 638 <nav id="TableOfContents"> 639 <ul> 640 <li><a href="#c">C++</a> 641 <ul> 642 <li><a href="#c26">C++26</a></li> 643 <li><a href="#c23">C++23</a></li> 644 <li><a href="#c20">C++20</a></li> 645 <li><a href="#c17">C++17</a></li> 646 <li><a href="#other-c-articles">Other C++ Articles</a></li> 647 <li><a href="#status">Status</a></li> 648 </ul> 649 </li> 650 <li><a href="#opengl--gpu">OpenGL & GPU</a></li> 651 <li><a href="#performance">Performance</a></li> 652 <li><a href="#projects">Projects</a> 653 <ul> 654 <li><a href="#flexible-particle-system">Flexible Particle System</a></li> 655 </ul> 656 </li> 657 <li><a href="#book-reviews">Book Reviews</a></li> 658 <li><a href="#other">Other</a></li> 659 <li><a href="#blogging-and-stats">Blogging and stats</a></li> 660 </ul> 661</nav> 662 663 </aside> 664 <aside class="right-panel"> 665 <div class="aside-top"> 666 <a class="img-link" href="https://www.patreon.com/cppstories" > 667 <img src="/images/joinpatreon_160.png" alt="Join Patreon" width=150px style="border:none"></a> 668 669 <h4>My Books</h4> 670 <a class="img-link" href="https://leanpub.com/cpp17indetail?utm_source=blog&utm_campaign=adside"> <img src="/images/cpp17_160_side.png" alt="C++17 In Detail" width=150px></a> 671 <br/> 672 <a class="img-link" href="https://leanpub.com/cpplambda"> <img src="/images/lambda_160_side.png" alt="C++ Lambda Story" width=150px></a> 673 <br /> 674 <a class="img-link" href="https://leanpub.com/cppinitbook"> <img src="/images/cppinit_160_side.png" alt="C++ Initialization Story" width=150px></a> 675 <h4>Recently Published</h4> 676 677 <section class="recent-article"> 678 <header> 679 <p class="aside-link"><a href="https://www.cppstories.com/2018/05/using-optional/">Using C++17 std::optional</a></p> 680 </header> 681 <p></p> 682 </section> 683 684 <section class="recent-article"> 685 <header> 686 <p class="aside-link"><a href="https://www.cppstories.com/2026/hardening-experiments/">C++26: Standard Library Hardening Experiments</a></p> 687 </header> 688 <p></p> 689 </section> 690 691 <section class="recent-article"> 692 <header> 693 <p class="aside-link"><a href="https://www.cppstories.com/2026/semaphore/">Understanding std::counting_semaphore and std::binary_semaphore from C++20</a></p> 694 </header> 695 <p></p> 696 </section> 697 698 699 </aside> 700</main> 701 702 <footer class="footer"> 703 <section class="author"> 704 705 <p>© 2011-2026, Bartlomiej Filipek<br> 706 707 Disclaimer: Any opinions expressed herein are in no way representative of those of my employers. All data and information provided on this site is for informational purposes only. I try to write complete and accurate articles, but the web-site will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. <br /> 708This site contains ads or referral links, which provide me with a commission. Thank y
708ou for your understanding. <br /> 709Built on the <strong><a href="https://gohugo.io/" _target="blank">Hugo</a></strong> Platform! 710 711 </section> 712 713</footer> 714 715 </div> 716
716<script src="/js/copy-button.js" defer></script>
716 717 </body> 718</html> 719
720<script> 721 window.addEventListener('hashchange', function(e){ 722 e.preventDefault(); 723 scrollOptions = { 724 left: 0, 725 top: -30, 726 behavior: 'auto' 727 } 728 window.scrollBy(scrollOptions) 729 }); 730 731</script>
vendor: 1 bytes, line 731
731
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.