Episode #14 - January 2022
In this episode we get a final look at the design of C++23, see how far we can push compile-time computation - and even code generation - in C++20, look at some tools to help us to get there, and what C++ could have been if we weren't burdened with backwards compatiblity.
Links from this episode:
- C++ Annotated - January 2022 - If you prefer the same material in blog form
- How we used C++20 to eliminate an entire class of runtime bugs - from the Microsoft C++ Team Blog
- Migrating to a safer API with {fmt} 8.x
- Compile Time Code Generation and Optimization
- cplusplus/papers - GitHub repo tracking proposals voted in
- A Plan for C++23 Ranges
- P2441 - views::join_with
- P2387 - Pipe support for user-defined range adaptors
- P0323 - std::expected
- Episode #5 (April 2021) - where we talked about std::expected
- P0627 - Function to mark unreachable code
- P1774 - Portable assumptions
- The new Qt Quick Compiler technology
- CLion Starts the 2022.1 EAP
- ReSharper C++ Starts the 2022.1 EAP
- Unreal Engine Support Lands in Rider 2022.1 EAP
- What would you remove from C++ to make it a more concise language and didn't have to care about backwards compatibility? (or fix if ABI weren't an issue) - Reddit thread
- All the defaults are backwards - Phil's lightning talk
Episode #13 - December 2021
In this episode we look back on C++ in 2021, and back even further over the evolution of functions and lambdas. Then we look forward to proposals that may or may not make it into C++ 23, as well as some of the conferences happening this year.
Links from this episode:
- Small Inspiration - Michael Caisse
- C++ Annotated - December 2021 - If you prefer the same material in blog form
- C++ at the end of 2021 - C++ Stories
- C++Now 2022 - Call For Submissions
- C++ on Sea 2022
- C++ On Sea - Call For Speakers
- C++ Russia 2022 Call for Speakers
- C++ North - A new C++ conference in Toronto, Canada
- ACCU Conference - In the UK in April. Schedule published soon
- The Evolutions of Lambdas in C++14, C++17 and C++20 - Fluent C++
- The Evolution of Functions in Modern C++
- P1774R5 - Portable assumptions
- P2507R0 - Only [[assume]] conditional-expressions
- P2300R3 - std::execution
- P2504R0 - Computations as a global solution to concurrency
- P2502R0 - std::generator: Synchronous Coroutine Generator for Ranges
- P2168R3 - std::generator: Synchronous Coroutine Generator for Ranges
- cppcoro - Lewis Baker's library of C++ coroutine abstractions
- P2505R0 - Monadic Functions for std::expected
- P0798R8 - Monadic operations for std::optional
- The Dawn Of A New Error - Phil's error handling talk where he mentions Monadic functions for std::expected
- Embedded Software Development in Visual Studio - C++ Team Blog
- CLion Roadmap for 2022.1
Episode #12 - November 2021
This month discuss the best ways to pass string_view
s, depend on Catch2 v3 and write beautiful C++.
We talk more about contracts and look at some new and upcoming tools from JetBrains,
as well as new releases of existing tools from JetBrains, SonarSource and Microsoft.
Phil also still manages to get an off-by-one error when mentioning off-by-one errors, at the end!
Links from this episode:
- C++ Annotated - November 2021 - If you prefer the same material in blog form
- Three reasons to pass `std::string_view` by value - from Arthur O'Dwyer's blog - Stuff mostly about C++
- Using Catch2 v3 in CMake with DDS and PMM
- Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code - from Kate Gregory's Blog
- Conditional Members
- Minimum Contract Support: either No_eval or Eval_and_abort
- Closure-Based Syntax for Contracts
- Attribute-like syntax for contract annotations
- Portable assumptions
- Visual Studio 2022 now available - from the Visual Studio Blog
- SonarLint for Visual Studio: v5.0 - Support VS 2022, drop support for VS 2015 - Releases - SonarSource Community post
- Introducing Remote Development for JetBrains IDEs
- Welcome to Fleet!
- CLion 2021.3: New Remote Development, Better Data Views in Debugger, Docker Toolchain, Custom Compiler, Type Hints, and More
Episode #11 - October 2021
This month we attempt an experimental cross-over episode with cpp.chat: in effect we have Jon Kalb on as a guest. Was it a successful experiment? You be the judge!
We look at static analysis, expressive interface and move semantics, three new proposals, and go a little deeper on conferences - especially CppCon, which just passed.
Links from this episode:
- C++ Annotated - October 2021 - If you prefer the same material in blog form
- C++ tools evolution: static code analyzers - from the PVS Studio blog
- Easy Way To Make Your Interface Expressive
- Moves in Returns
- P2445R0 - std::forward_like
- P2461R0 - Closure-Based Syntax for Contracts
- P2465R1 - Standard Library Modules std and std.compat
- CppCast episode with Bryce - he talks about the std and std.compat modules
- Timur Doumler's CppCon trip report
- Meeting C++ 2021
- ADC (The Audio Developer Conference)
- C++ Russia
- CPPP - "usually" in Paris
- cpp.chat
Episode #10 - September 2021
Lots of standards news, as many proposals are adopted into the C++23 working draft. Plus our usual round up of interesting blog posts and articles, including one from Phil that bridges the worlds of SonarSource and JetBrains. And CLion and ReSharper C++ start their latest EAPs.
Links from this episode:
- C++ Annotated - September 2021 - If you prefer the same material in blog form
- A compile-time benchmark for enable_if and requires - part 1
- A compile-time benchmark for enable_if and requires - part 2
- C++ Return: std::any, std::optional, or std::variant? - C++ Stories
- Coercing deep const-ness
- Binary Banshees and Digital Demons - long, entertaining and informative, rant about ABI
- P0798 - Monadic operations for std::optional - adopted into C++23 (working draft)
- P2128 – Multidimensional subscript operator - adopted into C++23 (working draft)
- P2321 - zip - adopted into C++23 (working draft)
- P0847 - Deducing this - adopted into C++23 (working draft)
- P2388 - Minimum Contract Support: either Ignore or Check_and_abort
- P2439 - What is a view? - slides
- P2415 - What is a view?
- P2446 - views::move
- P2441 - views::join_with
- P2442 - Windowing range adaptors: views::chunk and views::slide
- P2443 - views::chunk_by
- P2408 - Ranges views as inputs to non-Ranges algorithms
- P2432 - Fix istream_view
- CLion 2021.3 EAP
- ReSharper C++ 2021.3 EAP
- Supercharge your C++ analysis with SonarLint for CLion
- CppCon 2021 Program
Episode #9 - August 2021
As JetBrains celebrates 10 years of C++ support in their tools, we look at more modules, less [[nodiscard]] - the possibility of contracts and much more!
Links from this episode:
- C++ Annotated - August 2021 - If you prefer the same material in blog form
- Moving a project to C++ named Modules | C++ Team Blog
- Intel C/C++ compilers complete adoption of LLVM
- 10 years of C++ support at JetBrains
- Don't explicitly instantiate `std` templates
- Empty Base Class Optimisation, no_unique_address and unique_ptr - C++ Stories
- C++20 modules with GCC11
- What Is Our Focus for CLion 2021.3? | The CLion Blog
- Valgrind - A neglected tool from the shadows or a serious debugging tool? | craft::cpp
- Minimum Contract Support: either Ignore or Check_and_abort
- Remove nodiscard annotations from the standard library specification
- P2419R0: Clarify handling of encodings in localized formatting of chrono types
- P2372R2: Fixing locale handling in chrono formatters
- P2093R8: Formatted output
Episode #8 - July 2021
A jam-packed episode, from executors to aborting contracts, via iterators and parallel algorithms, concepts, sanitizers, tools and more...
Links from this episode:
- C++ Annotated - July 2021 - If you prefer the same material in blog form
- JetBrains Developer Ecosystem report for C++, 2021
- Be Wise, Sanitize - Keeping Your C++ Code Free From Bugs - Cleaning up your address space with AddressSanitizer (ASan)
- MemorySanitizer: fast detector of uninitialized memory use in C++
- C++20 concepts are structural: What, why, and how to change it?
- Counting in Iteration Models
- copy_n's number of InputIterator increments unspecified - Old LEWG issue regarding impact of different number of increments on an InputIterator
- P2406R0 - Fix `counted_iterator` interaction with input iterators
- An iterator IS-NOT-A const_iterator
- How to Return Several Values from a Function in C++
- Performance of the Parallel STL Algorithms
- P2300R1: std::execution - New proposal that aims to replace executors
- P0443R14: A Unified Executors Proposal for C++ - The current state of the executors proposal
- P2388R0: Abort-only contract support
- P2392R1: Pattern matching using is and as
- P2409R0: Requirements for Usage of C++ Modules at Bloomberg
- Qt Creator 5.0 Beta Released
- CMake 3.21.0
- Hot Reload in Visual Studio 2022
- CMake 3.21.0
- CLion 2021.2
- And finally, Bjarne Stroustrup on the future of programming
Episode #7 - June 2021
This month we reflect on text formating, compile times, the C++23 schedule, a round-up of tools news, and what C can do that C++ can't!
Standards news includes if consteval
, starts_with
and ends_with
and preventing std::string
s from being constructed from nullptr
.
Links from this episode:
- C++ Annotated - June 2021 - If you prefer the same material in blog form
- C++ on Sea
- CPPP - Call for speakers, open
- CppCon - Call for speakers, open, registration open, keynotes announced
- A quest for safe text formatting API - About type safe text formating in {fmt} and std::format
- C++ Library Include Times (CPP-LIT 🔥) - This repo answers the question: how much time is added to my compile time by a single inclusion of <header>?
- Herb's ISO plenary trip report
- Priorities for C++23
- Schedule for C++23
- P1933: if consteval
- P1659: starts_with and ends_with
- P2166: A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr
- CLion 2021.2 - Many Debugger Updates and Fixes for CMake Presets
- ReSharper C++ 2021.2 EAP - Inline Function Refactoring, Modernizing Inspections, Faster Clang-Tidy
- SonarLint plug-in for CLion - Detect Code Quality and Code Security issues on the fly in CLion
- PVS-Studio plug-in for CLion
- Switching to Clang Improved PVS-Studio C++ Analyzer's Performance
- What can C do that C++ can't? - Reddit thread
Episode #6 - May 2021
This month has a lot of errors. Finding coding errors, at runtime or compile/ analysis time. Handling error paths in code - all the different ways.
But we also look at building LLVM in 90 seconds, handling ABI breaks, vcpkg, CLion 2021.2 EAP, C++Now 2021 videos, Meeting C++ and C++ on Sea.
Links from this episode:
- C++ Annotated - May 2021 - If you prefer the same material in blog form
- Building LLVM in 90 seconds using Amazon Lambda
- Finding bugs with AddressSanitizer - Patterns from Open Source Projects
- A default value to dereference null pointers
- P0798: Monadic operations for std::optional - R6
- P2377: [[nodiscard]] in the Standard Library: Clause 23 Iterators library
- P2381: Pattern Matching with Exception handling
- P2123: Extending the Type System to Provide API and ABI Flexibility
- Presentation on 'Extending the Type System to Provide API and ABI Flexibility'
- All major Vcpkg enterprise features are no longer experimental
- CLion starts its 2021.2 Early Access Program - CMake Presets, New Project Templates, Lifetimes Analysis, and Cling support
- Early Access to C++Now 2021 recordings
- Meeting C++’s call for papers has started
- Full schedule for C++ on Sea is announced
Episode #5 - April 2021
This month we expect the std::expected, subscript in multiple dimensions, zip and enumerate our way to defining contracts, while surveying the C++ community. We also take a look at the latest CLion and ReSharper C++ releases, GCC 11, a Cuda extension for VS Code, and the Pure Virtual C++ and C++ Now conferences (which have already now passed before this episode was released).
Links from this episode:
- C++ Annotated - April 2021 - If you prefer the same material in blog form
- C++ Foundation Survey Results - For 2021
- P0323: std::expected - rebased onto working draft for C++23
- Dawn of a New Error - Phil's talk on std::expected, 'static exceptions' (p0709) and more
- P0798: Monadic operations for std::optional - The same idea to be applied to std::expected
- P2128: Multidimensional subscript operator
- P1161: Deprecate uses of the comma operator in subscripting expressions
- P2321: zip
- P2214: A Plan for C++23 Ranges
- P2164: views::enumerate
- P2358 – Defining Contracts
- CLion 2021.1 release - New Code Analysis Options, Updates to Remote Mode, and Postfix Completion
- CLion 2021.2 road-map
- ReSharper C++ 2021.2 - Syntax Style, New C++ Features, and Improved Unreal Engine Support
- Rider for Unreal Engine 2021.1 - Now runs on macOS
- GCC 11 - With support for modules and more C++20
- CUDA support in VS Code
- Pure Virtual C++ - MS C++ conference (now passed)
- C++ Now - May 2 - 7 (now passed)
- And finally, what is possible in modern C++ that wasn’t in C++98? - Reddit discussion
Episode #4 - March 2021
This month we chat about Contracts, Conferences and colonies, CLion and const (east), and a round-up the Russian Coat Check Algorithm, ReSharper-C++, return types and ridding C++ of macros.
Links from this episode:
- C++ Annotated - March 2021 - If you prefer the same material in blog form
- Improving Print Logging with Line Pos Info & Modern C++
- CLion Debugger video series
- GotW #101: Preconditions, Part 2 - From Herb Sutter's blog
- D2339R0 – 'Contract violation handlers'
- P2332R0 – 'Establishing std::hive as replacement name for the proposed std::colony container'
- Sean Parent's 'Better Code: Relationships' talk
- Anthony Williams' implementation of Sean's algorithm
- Syntax style setting in ReSharper C++ 2021.1 - including east/ west const, almost-always-auto and east-end-functions
- Branch Coverage in CLion 2021.1 - and the difference between line and statement coverage
- C++ Now - May 2 - 7
- C++ on Sea - June 30 - July 2
- Will we ever get rid of macros in C++? - Reddit discussion
Episode #3 - February 2021
In this month's round-up we cover the latest C++ committee plenary session, what's been approved to go into the C++23 standard, other proposals being worked on, news about Concepts and Modules, Clang Power Tools, Postfix completions in CLion and the C & C++ browser Search Extension
Links from this episode:
- C++ Annotated - February - If you prefer the same material in blog form
- C++ Developer Ecosystem 2021 Survey - Contribute your insights about C++ community
- Herb Sutter's Winter 2021 trip report - Including the February plenary session
- P1102 - Down with ()! - Making `()` optional, even for mutable lambdas
- P2093R4 - Formatted output - Integration with iostreams
- P2216R3 - std::format improvements - Compile time format string checks
- P1947 - C++ – an Invisible Foundation of Everything - Bjarne's summary of the principles of and ideals of C++
- More concepts library - intended to help categorize the STL containers and write some generic code that works with a selected category
- build2 with C++20 modules support. - Also includes some useful examples of modules in use
- Clang Power Tools - Format editor - Including the Style Detector
- Clang Power Tools - now 100% free for everyone - including commercial users
- Postfix completion for C and C++ in JetBrains tools - An alternative to UFCS?
- C/C++ search extension - Browser extension (except for Safari) to directly search cppreference
- When can the C++ compiler devirtualize a call? - from Arthur O'Dwyer's blog
Episode #2 - January 2021
Another round-up of community and committee news from the start of a new year.
Links from this episode:
- C++ Annotated - January - If you prefer the same material in blog form
- Faster C++ Iteration Builds - From the Microsoft Blog
- Global Data Flow Analysis - From the EAP announcement on the CLion Blog
- P0447 - std::colony - Introduction of std::colony to the standard library
- P2232 - Zero-Overhead Deterministic Exceptions: Catching Values - New exceptions proposal, based on Boost.Leaf
- P2168 - std::generator: Synchronous Coroutine Generator for Ranges - An generator library type for coroutines
- P2272 - Safety & Security Review Group - Proposal for a review group of invited experts to advise the committee on safety and security matters
- ACCU 2021 schedule announced
- C++ Now 2021 registrations open - the call for speakers is also open until the 14th February
- C++ on Sea 2021 pre-announced - the conference will be online, with more of a mix of workshop sessions
- Two's Complement - With Matt Godbolt and Ben Rady
- Klaus Iglberger on CppCast - SOLID Design Principles
- Clare Macrae's legacy code testing webinar - On 16th February - so register soon!
- Ray tracer in pure CMake
Episode #1 - December 2020
This month we talk about more news from around the C++ community - with a distinctly 20s theme.
You can watch the show on YouTube, listen to it as a podcast,
or read it as a C++ Annotated post on the CLion blog.
You can even subscribe to the text format as the C++ Annotated newsletter.
Links from this episode:
- 20 years of LLVM - LLVM started 20 years ago today! From humble beginnings at UIUC, it has grown to include contributions from hundreds of people and powers countless products and impactful languages. How have you used LLVM, contributed to it, or been touched by a product using it?
- C++20 published
- C++20 Comparisons in ReSharper C++ 2020.3 - ReSharper C++ 2020.3 brings full support for C++20’s changes to comparison semantics. In this post, we’ll briefly go over the language updates to comparisons in C++20 and take a look at how ReSharper C++ can help you use the new language features
- Boost 1.75 released - New C++ podcast with Chris Leary and JF Bastien
- Two's Complement - A Programming Podcast by Matt (Godbolt) and Ben (Rady)
- CoSy Tech - Why Another C++ (And More™) Conference?
- Two's Complement - A Programming Podcast by Matt (Godbolt) and Ben (Rady)
- r/cpp: 'A basic trick question that I've been asked in interview' - Hi everyone, today I had a codepair interview for Graduate C++ Developer position and this was one the question that interviewer asked me. I found it quite interesting.
- r/cpp: CLion Q&A Session on Reddit: CLion Today and Tomorrow - This Q&A session will focus on the recent 2020.3 release, our overall plans for 2021, and our roadmap for v2021.1. By the end of this year, we’ve enhanced the debugger experience by adding many top-voted feature requests, started bringing MISRA checks to CLion, tuned IDE actions for Qt, and integrated with CTest. Overall IDE performance, as well as making existing features more stable and complete, are our major goals for 2021 for CLion.
Episode #0 - November 2020
Welcome to our pilot episode, covering a selection of this month's news from the C++ community.
You can watch the show on YouTube, listen to it as a podcast,
or read it as a C++ Annotated post on the CLion blog.
You can even subscribe to the text format as the C++ Annotated newsletter.
Links from this episode:
- CppCast - The first C++ podcast
- C++ Weekly - Jason Turner's YouTube show
- cpp.chat - C++ podcast with Phil co-hosting with Jon Kalb
- TLB Hit - New C++ podcast with Chris Leary and JF Bastien
- ADSP - The first C++ podcast
- CppCast - The first C++ podcast
- Modules support in Visual Studio - From the Microsoft Blog
- Modules support coming to GCC 11?
- Qt6 libraries via Conan
- CLion 2020.3 released - with Core Dumps Debug and Debug as Root, CTest Support, MISRA Guideline Integration, and a Better Qt Project Experience
- ReSharper C++ 2020.3 (about to be) released - with UnrealHeaderTool, C++20 Comparisons, Push-to-Hint Inlay Hints
- std::visit is everything wrong with modern C++ - recent Reddit thread on this blog post from 2017
- Pattern Matching proposal