C++: The Invisible Engine of Everything (1 min) -- Bjarne Stroustrup
Bjarne Stroustrup describing C++ in one minute:
C++: The Invisible Engine of Everything
September 13-19, Aurora, CO, USA
October 25, Pavia, Italy
November 6-8, Berlin, Germany
November 3-8, Kona, HI, USA
By Blog Staff | Aug 15, 2019 12:21 PM | Tags: None
Bjarne Stroustrup describing C++ in one minute:
C++: The Invisible Engine of Everything
By Timur Doumler | Aug 15, 2019 11:14 AM | Tags: None
Timur Doumler's trip report from the ISO C++ committee meeting in Cologne in July 2019. A snapshot of what's going on in the world of C++ standardisation, from the perspective of an audio developer.
Trip Report July 2019 ISO C++ Committee Meeting
by Timour Doumler
About the trip report
A few weeks ago, the C++ committee descended upon Cologne, Germany, to finalise the C++20 Committee Draft (or in other words, our “release candidate” for C++20).
As usual, my trip report does not aim for completeness at all. Instead, it focuses on a few particular areas that I was involved in personally and/or things that might be relevant for the audio community.
By Adrien Hamelin | Aug 15, 2019 10:56 AM | Tags: community
Check it out!
2019 Poster Program Announced
by Bob Steagall
From the article:
We’re pleased to announce that the 2019 Poster Program is now available! We have twelve outstanding entries this year, and encourage you to stop by and read all of them...
By Adrien Hamelin | Aug 15, 2019 10:54 AM | Tags: advanced
Quick A: initialisers can access private members.
Recently on SO:
C++11 lambdas can access my private members. Why?
The initializer expression in the definition of a static data member is in the scope of its class...
By Adrien Hamelin | Aug 15, 2019 10:50 AM | Tags: community
Up for it?
Lightning Talks and Lightning Challenge
by Phil Nash
From the article:
Whilst many of the main conference talks go deep, Lightning Talks are, well, lighter. That doesn’t mean you won’t gain deep insights from some. Many, however, are humorous, entertaining – and often high-energy...
By Adrien Hamelin | Aug 14, 2019 11:19 AM | Tags: community
Do you do that?
C++ Core Guidelines: Non-Rules and Myths
by Rainer Grimm
From the article:
Of course, you already know many non-rules and myths to C++. Non-rules and myths which we have to argument against when we use modern C++. The supporting section of the C++ core guidelines addresses the most resistant once but also provides alternatives...
By Adrien Hamelin | Aug 14, 2019 11:17 AM | Tags: community
Another interview.
Presenter Interviews: Stephan T. Lavavej
by Kevin Carpenter
From the article:
In this week’s presenter interview, Kevin Carpenter welcomes Stephan T. Lavavej (STL) for a preview of his upcoming talk, Floating-Point charconv: Making Your Code 10x Faster With C++17’s Final Boss. Stephan discusses achieving a 3x to 10x speed up with charconv in C++17.
By Adrien Hamelin | Aug 14, 2019 11:04 AM | Tags: c++17
It's not all about the big things.
17 Smaller but Handy C++17 Features
by Bartlomiej Filipek
From the article:
When you see an article about new C++ features, most of the time you’ll see a description of major elements. Looking at C++17, there are a lot of posts (including articles from this blog) about structured bindings, filesystem, parallel algorithms, if constexpr, std::optional, std::variant… and other prominent C++17 additions.
But how about those smaller parts? Library or language improvements that didn’t require decades to standardise or violent “battles” at the ISO meetings.
In this article, I’ll show you 17 smaller C++17 things that will improve your code...
By Adrien Hamelin | Aug 13, 2019 10:30 AM | Tags: community
And the next one.
Combining Ranges and Smart Output Iterators
by Jonathan Boccara
From the article:
In our current stage of development of smart output iterators, we have:
- some iterators, such as filter, transform, unzip or demux,
- the possibility to combine them: filter(pred) >>= transform(f) >>= unzip(back_inserter(output1), back_inserter(output2))
- their usage as the output iterator of an STL algorithm:
std::copy(begin(inputs), end(inputs), transform(f) >>= back_inserter(outputs));What we’re going to work on today is removing the call to std::copy to have a pipeline made of output iterators only. And once we get such a pipeline, we will plug it to ranges, in order to benefit from the expressiveness of both ranges and smart output iterators, in the same expression...
By Adrien Hamelin | Aug 13, 2019 10:27 AM | Tags: intermediate
Quick A: When you might delete polymorphically.
Recently on SO:
When to use virtual destructors?
Virtual destructors are useful when you might potentially delete an instance of a derived class through a pointer to base class:
class Base { // some virtual methods }; class Derived : public Base { ~Derived() { // Do some important cleanup } };Here, you'll notice that I didn't declare Base's destructor to be virtual. Now, let's have a look at the following snippet:
Base *b = new Derived(); // use b delete b; // Here's the problem!Since Base's destructor is not virtual and b is a Base* pointing to a Derived object, delete b has undefined behaviour...