I see that many still tend to misunderstand the use of the inline keyword, and I do understand them, as I was part of that team years ago. In this article I’m focusing on free functions, but most of the remarks will be valid for member functions (including those that are implicitly inline), templated functions, …
Continue reading The real meaning of `inline` (for free functions)Also available in Italian On Twitter recently someone posted this picture: Ok, that’s C#, but we can (and will, in a few lines) rewrite it in C++. In the twitter responses, many people made fun of the code, or complained that the function is full of magic numbers, some others that it’s too long (implying …
Continue reading 10 BallsThe challenge In a recent post, I shown how a GPT-3 based AI can perform in a C++ interview, giving the impression to know C++. I really wanted to run more tests, and recently I noticed that ChatGPT became available. ChatGPT is a service that allows you to chat with an AI. This time I …
Continue reading Meet my new friend, the AI-powered rubber duckI’ve been testing GitHub Copilot recently, to see how far it can be pushed, and I must say that, for C++ applications alone, I’m happy with the results, but not too impressed. This is the opinion I formed after just after a few hours playing with it, and on a very specific problem (DX12 programming), …
Continue reading A coding interview with GPT-3This post is also available in Italian. Recently I did a batch of interviews for three positions in my team, and part of my standard interview is a coding question. I tend to focus on problems that will take at most 50% of the time I have, so the ideal question for me is apparently easy, …
Continue reading The Coding InterviewI begun to write this two years ago at the beginning of the pandemic, but then forgot to read, and hit publish. I think today is a good day to update, clean up, and publish. You might not be stranded at home anymore, but I think most of the things I wrote are still valid, …
Continue reading On studying C++This code has been compiling for the last several years, despite the fact we have the perfect tool to make this foolish code stop compiling. Adding an ampersand at the end of every copy-assignment and move-assignment operator (or operators of the form <op>=). Why isn’t this best practice already? Or if it is, why isn’t …
Continue reading Should this stop compiling?Updated on 2019/07/03 (long overdue) after this thread on reddit. My post from last week contained a HUGE bug: optionals don’t move their content lose their value on move, so destructor on moved handles is still invoked (thus causing multiple destructions). In the brief discussion on reddit, I proposed to create a optional with move …
Continue reading Moveable optional, really?In the last few days, I needed to create a thin wrapper class that apply RAII patterns to handles coming from a C library. I did this several times in the past, but this time I think I come up with some new solutions, at least for me. In this post, I’ll consider this toy …
Continue reading Wrapping C APIs, and why I wanted a base class to be conditionally copyableOn my recent question on twitter I asked how this piece of code would behave in case of built-in arithmetic types (which I inaccurately referred to as basic numeric types): template<typename T> T f() { T t{}; while (t < t+1) { t++; } return t; } The question is more complex than it seems. …
Continue reading Can you count to infinity?