Skip to content
HHackerTube.videoSurprise me

CppCon 2015: Andrei Alexandrescu “Declarative Control Flow"

CppCon 2015: Andrei Alexandrescu “Declarative Control Flow" on HackerTube: recommended by 2 Hacker News commenters across 2 separate months, 2016–2022.

CppCon

talk · advanced · evergreen

Open on YouTube

Andrei Alexandrescu's CppCon 2015 talk on handling exceptional control flow declaratively in C++. It uses scope guards with success and failure variants, built on std::uncaught_exceptions, to replace ad hoc RAII classes and rethrowing try/catch blocks.

Why Hacker News recommends it

Pointed to in threads on defer, scope_exit and RAII as the clearest treatment of scope guards.

people recommended it
2
separate months
2
strong recommendations
0
discussed on HN
2016–2022
“Andrei Alexandrescu has a fun talk about implementing scope_exit”
— uep, Feb 2018, in “Scope exit in C++11 (2012)”

What HN commenters said

5 Hacker News comments link this video. Each one links back to its thread.

uepFeb 2018Recommends

Andrei Alexandrescu has a fun talk about implementing scope_exit using a new C++17 function: std::uncaught_exceptions (which is a tweak to std::uncaught_exception). Fundamentally, it doesn't really solve the destructor throwing exceptions issue though. ▶ this video

in “Scope exit in C++11 (2012)” · View on HN

Ace17Jul 2016Recommends

Google is an example that writing production code that doesn't use exceptions is possible, not that this is the right thing to do. They said that their decision was primarily legacy-motivated (in short, they were fearing that introducing exceptions in a non-RAII codebase would lead us to a long period of instability). I'll add that in some situations (e.g when freeing resources) the control flow gets very convoluted, and you don't want to deal with directly. See: Andrei Alexandrescu - Declarative Control Flow ( ▶ this video )

in “Memory management in C programs (2014)” · View on HN

einpoklumOct 2022Cites it

A count of the number of exceptions in-flight was added, replacing the boolean indication of whether an exception is in-flight. This allows the scope guard construct proposed by Andrei Alexandrescu to distinguish between a scope being left on success and on an exception being thrown. YouTube video about scope guard: ▶ this video Description of the change to the standard: [link]

in “A Tour of C++ (Third edition)” · View on HN

watmoughJun 2022Cites it

I think scope or similar is good. Also, see related video here CppCon 2015: Andrei Alexandrescu “Declarative Control Flow" ▶ this video

in “Ask HN: What should have been the term for RAII?” · View on HN

dnauticsDec 2020Cites it

yes, you always run defer. I don't see it in this proposal, but Most languages/frameworks that implement a defer also implement a "error defer" which only gets triggered on some sort of labeled early exit scenario, and some implement "success defer": (i believe this is scopeguard: ▶ this video )

in “A Defer Mechanism for C” · View on HN

Topics & tags

C, C++, Rust, Go & systems languagesscope guardraiiuncaught_exceptionscppconandrei alexandrescu