News

Raw loops vs STL algorithms

A new post on the Meeting C++ blog, this time on <algorithm>

Raw loops vs. STL algorithms

by Jens Weller

From the article:

Since last week I am working on my CMS for static HTML pages again, and so the series about Building applications with Qt and boost continues. Today its about using STL algorithms, or how Sean Parent once said "no raw loops!". Now, I am not Sean Parent, and not event the implementers of the STL are perfect. Most code which I write is application code, which then powers Meeting C++. Also, I don't know all STL algorithms, and some times its just to tempting to write a little loop instead of searching the STL for the specific algorithm. Yesterday I had such a case.

Emulating C++17 Structured Bindings in C++14--John Bandela

How to use tuple return values with ease?

Emulating C++17 Structured Bindings in C++14

by John Bandela

From the article:

Bjarne Stroustrup back in Novemeber wrote a nice progress report, available here, of the Kona meeting. One of the proposals considered is called structured binding. The proposal addresses one of the inconveniences of returning multiple values from a function using tuples. While, it is very easy for a function to return multiple values, it is harder for the caller to use them. Here is an example from the write up.

consider the following function

tuple<T1,T2,T3> f() { /*...*/ return make_tuple(a,b,c); }

If we want to split the tuple into variables without specifying the type, we have to do this;

auto t = f();
auto x = get<1>(t);
auto y = get<2>(t);
auto z = get<3>(t);

The proposal puts forth the following syntax instead

auto {x,y,z} = f();               // x has type T1, y has type T2, z has type T3

I am excited for this feature, and for C++17 in general. While waiting for C++17, I decided to see how close I could get with C++14. Here is the result.

auto r = AUTO_TIE(x,y,z) = f();               // x has type T1, y has type T2, z has type T3

// Unlike the C++17 feature, you need to use r.x instead of just x
std::cout << r.x << "," << r.y << "," << r.z << "\n";

C++ User Group Meetings in February

The monthly listing of upcoming C++ User Group meetings at Meeting C++:

C++ User Group Meetings in February

by Jens Weller

From the article

The monthly overview on the upcoming C++ User Group meetings! In the shortest month of the year there are still 21 C++ User Groups which are meeting!

There are 7 new C++ User Groups: Sofia, Ho Chi Minh, Iasi, Noida, Macedonia, Buenos Aires, Stuttgart / Ludwigsburg (Qt).

Constructor Failures--Arne Mertz

Constructing or not constructing, that is the question.

Constructor Failures

by Arne Mertz

From the article:

Sometimes we fail to acquire a needed resource or responsibility during the construction of an object. Sometimes the construction of a subobject fails. How can we deal with an incompletely constructed object?

 

Experiments in partition and remove -- Brent Friedman

An analysis and exploration of partition and remove algorithms. By combining aspects of these two, we rediscover useful algorithms that the Standard Library doesn't have.

Experiments in partition and remove

by Brent Friedman

From the article:

The C++ Standard Library exposes dozens of powerful algorithms for use in everyday software. Two of these algorithms, partition and remove_if, provide similar functionality for segregating data. If we dig carefully into implementations of these algorithms, a certain symmetry is exposed. This exploration will lead us to the discovery of useful algorithms that we can employ in our daily engineering work.
This article demonstrates particular algorithm implementations — but it is important to remember that the source code will vary between different implementations of the standard library, and can differ based on what sort of data you pass in.

CppCast Episode 43: Compiler Explorer with Matt Godbolt

Episode 43 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Matt Godbolt to discuss the online Compiler Explorer project.

CppCast Episode 43: Compiler Explorer with Matt Godbolt

by Rob Irving and Jason Turner

About the interviewee:

Matt is a developer at trading firm DRW. Before that he's worked at Google, run a C++ tools company, and spent over a decade in the games industry making PC and console games. He is fascinated by performance and created GCC Explorer, to help understand how C++ code ends up looking to the processor. When not performance tuning C++ code he enjoys writing emulators for 8-bit computers in Javascript.