# Modern C++ for Embedded with Niall Cooling

- Show: [The Pragmatic Embedded Podcast](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast)
- Published: 2023-05-18
- Length: 58m
- Page: https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling
- Listen: https://agileembeddedpodcast.com/episodes/modern-cpp-embedded-niall-cooling-wJN8pP0G

## Summary

Niall Cooling, director at Feabhas, explains how modern C++ (C++11 through C++23) enables safer, more agile embedded development by replacing C-style practices with compiler-enforced safety and modern tooling. He highlights 'quick wins' like `auto`, `constexpr`, and guaranteed copy elision, which improve code readability and performance without sacrificing the efficiency of C. Cooling argues that the true value of C++ lies in its ecosystem of header-only testing frameworks (like Doctest and Catch2), static analysis tools (Clang-tidy), and CI/CD integration, which allow teams to adopt Agile practices like Test-Driven Development (TDD) even in deeply embedded, safety-critical contexts. He contrasts this with the steep learning curve of Rust and emphasizes that successful adoption requires significant investment in training and process improvement rather than just language syntax changes.

## Chapters

- [0:00](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=0) Introduction: Niall Cooling and Feabhas
- [4:14](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=254) The Evolution of C++ Standards in Embedded Systems
- [8:41](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=521) Modern C++ Quick Wins: auto, constexpr, and Safety
- [18:28](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=1108) Memory Management: Smart Pointers vs. Rust
- [24:02](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=1442) Agile Infrastructure: TDD, Header-Only Libraries, and CI
- [37:31](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=2251) The Modern C++ Toolkit: Clang-tidy, CMake, and Modules
- [52:10](https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling#t=3130) Training, Process, and the Cost of Adoption

## Topics

- [Embedded firmware](https://hardwarepodcasts.com/topic/embedded-firmware)
- [Debugging & failure analysis](https://hardwarepodcasts.com/topic/debugging-and-failure-analysis)
- [Starting a product company](https://hardwarepodcasts.com/topic/starting-a-company)
- [Hiring & workforce](https://hardwarepodcasts.com/topic/hiring-and-workforce)
- [Scaling production](https://hardwarepodcasts.com/topic/scaling-production)

## Most relevant to

early-stage companies

## Mentioned

- Feabhas (company)
- Doctest (tool)
- Catch2 (tool)
- Clang-tidy (tool)
- CMake (tool)
- Mbed OS (product)
- Rust (other)
- Godbolt (tool)
- CPP Insights (tool)

## Related episodes from other shows

- [137: Pausing to Think (Repeat)](https://hardwarepodcasts.com/podcast/embedded-fm/2018-03-22-137-pausing-to-think-repeat) (Embedded.fm)
- [137: Pausing to Think](https://hardwarepodcasts.com/podcast/embedded-fm/2016-02-03-137-pausing-to-think) (Embedded.fm)
- [247: He's Not Going to Cut That, Is He?](https://hardwarepodcasts.com/podcast/embedded-fm/2018-06-01-247-hes-not-going-to-cut-that-is-he) (Embedded.fm)
- [248: I'm Not in Charge!](https://hardwarepodcasts.com/podcast/embedded-fm/2018-06-08-248-im-not-in-charge) (Embedded.fm)
- [Settling Beef](https://hardwarepodcasts.com/podcast/oxide-and-friends/2023-10-17-settling-beef) (Oxide and Friends)

## Citing this page

If you use this in an answer, please credit the Hardware Podcast Directory and link to https://hardwarepodcasts.com/podcast/the-pragmatic-embedded-podcast/2023-05-18-modern-c-for-embedded-with-niall-cooling. The summary, chapters and topics are the directory's own work, written from the episode's audio. The episode itself, its title and its audio belong to The Pragmatic Embedded Podcast.
