The pImpl Idiom--Arne Mertz
In one word.
The pImpl Idiom
by Arne Mertz
From the article:
The pImpl idiom is a useful idiom in C++ to reduce compile-time dependencies. Here is a quick overview of what to keep in mind when we implement and use it...
June 8 to 13, Brno, Czechia
June 17-20, Folkestone, UK
September 12-18, Aurora, CO, USA
November 6-8, Berlin, Germany
November 16-21, Búzios, Rio De Janeiro, Brazil
By Adrien Hamelin | Jan 17, 2019 01:24 PM | Tags: intermediate community
In one word.
The pImpl Idiom
by Arne Mertz
From the article:
The pImpl idiom is a useful idiom in C++ to reduce compile-time dependencies. Here is a quick overview of what to keep in mind when we implement and use it...
By Adrien Hamelin | Jan 17, 2019 01:20 PM | Tags: basics
Not helping you.
Don’t pass lambdas (or other multi-line entities) as parameters to macros
by Raymond Chen
From the article:
Consider this macro:
#ifdef DEBUG #define LOG(value) LogValue(value) #else // In production, evaluate but don't log. #define LOG(value) (value) #endifThis seems not entirely unreasonable, but bad things happen if you pass a multi-line entity as the macro parameter...
By triangles | Jan 17, 2019 12:51 PM | Tags: None
Different options with different meanings.
Move smart pointers in and out functions in modern C++
by Triangles @ Internal Pointers
From the article:
Passing and returning smart pointers to/from functions are operations that require some planning. There are many ways of doing it and picking the right one is not always straightforward. Luckily for us C++ experts have guidelines that shed some light on this task.
By Lucian Radu Teodorescu | Jan 17, 2019 12:50 PM | Tags: None
How to solve the dining philosophers problem in 2018? By using tasks. And how to use tasks? Read on...
Modern dining philosophers
by Lucian Radu Teodorescu
From the article:
We give several solutions to the dining philosophers problem, each with some pros and cons. But, more importantly, we walk the reader through the most important aspects of using tasks to solve concurrency problems.
Instead of reaching for our higher-level frameworks, we opted to keep the level of abstractions as close as possible to raw tasks. This way, we hope to guide the reader to understand more about the essence of task-based programming. Our aim is to make the reader comprehend the machinery of composing tasks; those skills should be highly valuable.
By Adrien Hamelin | Jan 14, 2019 02:13 PM | Tags: intermediate c++17
Short and clear.
C++17: std::scoped_lock
by Marc Gregoire
From the article:
C++17 includes an std::scoped_lock (defined in <mutex>) which basically replaces std::lock_guard...
By Adrien Hamelin | Jan 14, 2019 02:03 PM | Tags: experimental
Simple, good.
The overview of C++20 Range view
by Ryou Ezoe
From the article:
The latest C++ draft at the time of writing incorporated The One Ranges Proposal.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4791.pdf
So what is a Range, anyway? The C++ Standard Comittee member, Eric Niebler, summarised it well in this article:
Eric Niebler – Eric Niebler
Actually, he summarised it all too well to the point that his code became almost unreadable to an average C++ programmer. One might say, it's practically useless. So this article serves as a quick tutorial for the Range view...
By Meeting C++ | Jan 13, 2019 12:18 PM | Tags: meetingcpp intermediate experimental community advanced
The Center Keynote by Lisa Lippincott from Meeting C++ 2018
The Truth of a Procedure
by Lisa Lippincott
By Adrien Hamelin | Jan 9, 2019 01:09 PM | Tags: c++11 basics
Quick A: Write the type!
Recently on SO:
How to use auto keyword to assign a variable of type uint32_t or uint64_t in C++
I'm assuming you're working with the AAA style suggested by Herb Sutter.
In that case, a nice solution is to simply write:
auto variable_name = uint64_t{ 5000000000 };This is clear, consistent, and explicitly typed with no nasty C-preprocessor necessary.
By Adrien Hamelin | Jan 9, 2019 12:56 PM | Tags: basics
And it may be respected.
const is a contract
by Arthur O’Dwyer
From the article:
Here’s a slogan that needs more currency...
By pkeir | Jan 9, 2019 10:56 AM | Tags: None
Swapping arguments using a fold expression.
Swapping the Contents of n Variables
by Paul Keir
From the article:
C++11's
std::swapis a binary function template which exchanges the contents of its two reference arguments. In C++20std::swapwill likely also permit execution at compile-time. In this post we consider a version which can swap the contents of an arbitrary number of arguments using a C++17 fold-expression...