CppCast Episode 146: CppDock and Nbdl with Jason Rice

Episode 146 of CppCast the only podcast for C++ developers by C++ developers. In this episode Rob and Jason are joined by Jason Rice to discuss C++ Web Application Development and his libraries CppDock and nbdl.

CppCast Episode 146: CppDock and Nbdl with Jason Rice

by Rob Irving and Jason Turner

About the interviewee:

Jason Rice is a web applications programmer with an appetite for C++ metaprogramming having made small contributions to Boost.Hana. He is actively working on the library Nbdl, waiting for the day when C++ takes over the web.

compile-time iteration with C++20 lambdas—Vittorio Romeo

This article covers various compile-time "iteration" constructs that rely on the upcoming "familiar template syntax for lambdas" C++20 feature.

compile-time iteration with C++20 lambdas

by Vittorio Romeo

From the article:

In this article I'm going to show you how to implement the above constructs, relying on a new nifty addition to C++20 lambdas: [P0428: "Familiar template syntax for generic lambdas"], by Louis Dionne. [...]

It shows how to implement constructs for the following operations:

Iterating over a list of types;
Iterating over a list of compile-time values;
Iterating over a compile-time integral range;
Enumerating a list of types alongside their indices.
The code provided works on g++ 8

ACCU 2018 Trip Report—Felix Petriconi

The yearly conference of the ACCU just has taken place in Bristol, UK. It had three strong C++ tracks.

ACCU 2018 Trip Report

by Felix Petriconi

About the report

Felix describes his view on the conference from the perspective of a conference committee member.

How to Pass a Polymorphic Object to an STL Algorithm—Jonathan Boccara

Did you ever try?

How to Pass a Polymorphic Object to an STL Algorithm

by Jonathan Boccara

From the article:

As we can read in the opening chapter of Effective C++, C++ is a federation of 4 languages:

  • the procedural part coming from C,
  • the object-oriented part,
  • the STL part (following a functional programming paradigm),
  • the generic part with templates.

And what’s more, all of those 4 sub-languages are part of one whole: the C++ language. Those 4 paradigms begin united in one language gives opportunities for them to interact – and often, those interactions create interesting situations.

Today we’re focusing on one particular interaction, between the object-oriented model and the STL. There could be multiple forms for this interaction, and the case we will look at is how to pass a polymorphic (that is, having virtual methods) function object to an STL algorithm.

uninitialized_tag in C++—Marius Elvert

Optimise or not?

uninitialized_tag in C++

by Marius Elvert

From the article:

No doubt, C++ is one of those languages you can use to squeeze out every last drop of your CPU’s processing power. On the other hand, it also allows a high amount of abstraction. However, micro-optimization seldom works well with nice abstractions...

Submit your talk to Meeting C++ 2018

The call for talks for Meeting C++ 2018 is open until June 10th:

Submit your talk to Meeting C++ 2018!

by Jens Weller

From the article:

This year its the 7th edition of Meeting C++, the 2nd time that it spans 3 days!

Speaking at Meeting C++ is a fun experience, you get to attend the speakers dinner, attend the full conference for free and enjoy the luxurious Hotelrooms the Andels offers from Wednesday to Saturday! You can look at last years schedule to get a feel for what your competition might talk about, but have in mind that you don't see the talks that were not submitted! If you want to talk about a C++ topic that wasn't covered yet, or have a unique idea for your talk, please submit!

Start speaking!

Meeting C++ encourages you to start speaking about C++, as we all like to hear more and different voices and opinions on the wide range that C++ has become since C++11. Thats why Meeting C++ has a track that is dedicated to new speakers! If this is of interest to you, please read Jon Kalbs blog post on Developing Talk Ideas, additional information on speaking and slide design is available in the speaking guidelines of Meeting C++! You'll find help with your talk in the C++ slack under #speakerscorner.
Also you can submit talks on embedded to Meeting Embedded 2018!

C++17: The two line visitor explained—Marius Elvert

The power of C++17.

C++17: The two line visitor explained

by Marius Elvert

From the article:

If you have ever used an “idiomatic” C++ variant datatype like Boost.Variant or the new C++17 std::variant, you probably wished you could assemble a visitor to dispatch on the type by assembling a couple of lambda expressions like this:

auto my_visitor = visitor{
  [&](int value) { /* ... */ },
  [&](std::string const& value) { /* ... */ },

Quick Q: With “-fno-exceptions”, what happens with “new T”?

Quick A: The behaviour will likely stay the same.

Recently on SO:

With “-fno-exceptions”, what happens with “new T”?

The way I understand it, operator new is defined by libstdc++. If you now compile your own code with -fno-exceptions, you cannot catch any exceptions, but you will still be linking against the normal version of libstdc++, which does throw an exception.

So yes, new T will throw an exception, even with -fno-exception.

However, if you compiled libstdc++ with -fno-exception as well, things become different. Now, new T cannot throw an exception but, if I read the libstdc++ manual right it will call abort() instead.

It seems that, if you want your new T to return NULL on failure, the only way is to explicitely specify nothrow...