Articles & Books

C++ User Group Meetings in March

The monthly overview on upcoming C++ User Group meetings by Meeting C++

C++ USer Group Meetings in March 2019

by Jens Weller

From the article

The monthly overview of upcoming C++ User Group meetings! Lots of groups already announced their meetings, if your group is not in the list, they might announce later.

Want to speak at a User Group? Use the contact form to reach out to several User Groups that you'd be able to visit for a talk!

There are 4 new C++ User Groups...

Overload 149 is now available

ACCU’s Overload journal of February 2019 is out. It contains the following C++ related articles.

Overload 149 is now available

From the journal:

Rip It Up and Start Again.
Some things can be resurrected, others cannot. Frances Buontempo wonders when we need to repent and start over.

5 Big Fat Reasons Why Mutexes Suck Big Time.
Mutable shared state in multithreaded code is often protected by mutexes. Sergey Ignatchenko reminds us that Re-Actors can avoid many of the problems.

A Small Universe.
Writing a programming language is a hot topic. Deák Ferenc shows us how he wrote a compiler for bytecode callable from C++.

QM Bites: Understand Windows Operating-System Identification Preprocessor Macros.
Quality matters and bite sized articles help. Matthew Wilson returns with a QM Bites.

A Thorough Introduction to Distributed Systems.
What is a distributed system, and why is it so complicated? Stanislav Kozlovski explains.

Don’t Use std::endl.
How do you add a new line in C++? Chris Sharpe suggests std::endl is a tiny utility that’s more trouble than it’s worth.

Cpp On Sea 2019 Trip Report--Arne Mertz

Were you there?

Cpp On Sea 2019 Trip Report

by Arne Mertz

From the article:

From February 3rd through February 6th I have been in Folkestone, UK, to visit the first C++ On Sea conference.

There must be something in the water on that island that enables them to organize fantastic conferences like ACCUConf and, since this year, C++ On Sea.
C++ On Sea is definitely the best conference I have ever been to, and here’s a little glimpse why I think so...

2 Lines Of Code and 3 C++17 Features - The overload Pattern--Bartlomiej Filipek

Proof that you can do more!

2 Lines Of Code and 3 C++17 Features - The overload Pattern

by Bartlomiej Filipek

From the article:

While I was doing research for my book and blog posts about C++17 several times I stumbled upon this pattern for visitation of std::variant:

template<class... Ts> struct overload : Ts... { using Ts::operator()...; };
template<class... Ts> overload(Ts...) -> overload<Ts...>;

std::variant<int, float> intFloat { 0.0f };
std::visit(overload(
    [](const int& i) { ... },
    [](const float& f) { ... },
  ),
  intFloat;
);

With the above pattern, you can provide separate lambdas “in-place” for visitation.

It’s just two lines of compact C++ code, but it packs a few interesting concepts.

Let’s see how this thing works and go through the three new C++17 features that enable this one by one.

Why You Should Use std::for_each over Range-based For Loops--Jon Kalb

What do you think?

Why You Should Use std::for_each over Range-based For Loops

by Jon Kalb

From the article:

I’d like start by thanking Jonathan for creating and maintaining the Fluent{C++} blog, for the conversations that it spawns, and for letting me contribute with this guest post. Jonathan has invited me to add my thoughts on his previous posting, Is std::for_each obsolete?

Unit Testing C++ Templates and Mock Injection -- Sumant Tambe

Do you unit test your C++ templates? It may be tricky as sometimes it's not clear how to inject mock code into a template. Traits can help! 

Unit Testing C++ Templates and Mock Injection Using Traits

by Sumant Tambe

About the Article:

Unit testing your template code comes up from time to time. (You test your templates, right?) Some templates are easy to test. No others. Sometimes it's not clear how to about injecting mock code into the template code that's under test. I've seen several reasons why code injection becomes challenging.