Un-Deprecate Your Qt Project--Giuseppe D'Angelo

Giuseppe D'Angelo explains how the Qt project deprecates APIs, a challenge every library project faces.

Un-Deprecate Your Qt Project

by Giuseppe D'Angelo

From the article:

Any product needs to evolve if it wants to remain competitive. If the development bandwidth is finite, from time to time there is the need to drop some ballast. This does not necessarily mean dropping working functionality and leaving users in the cold. At least in Qt most of the time this actually means replacing working functionality with better working functionality.

This process has being going on in Qt since forever, but since Qt 5.0 we’ve started to formalize it in terms of documentation hints and macros in the source code. This was done with a precise purpose: we wanted Qt users to discover if they were using deprecated APIs, and if so, let them know what better alternatives were available.

And since the very release of Qt 5.0.0 we’ve officially deprecated hundreds of APIs: a quick grep in QtBase alone reveals over 230 hits (mostly functions, but also entire classes).

Slides of the 24th of January 2017 BeCPP Meeting

BeCPP_Logo_282x64.pngOn 24th of January 2017, the Belgian C++ Users Group had their next event sponsored by Nikon Nobel Biocare.

Slides of the 24th of January 2017 BeCPP Meeting

There were two presentations:

  • "BeC++17 – Part II" (Peter Van Weert)
  • "Our Journey to C++" (Cosmin Cremarenco)

If you couldn’t attend the event in person, or if you would like to go over the material again, you can download them from the BeCPP website.

C++ User Group Meetings in February

The monthly overview on upcoming C++ User Group Meetings:

C++ User Group meetings in February

by Jens Weller

From the article:

The monthly overview on upcoming C++ User Group meetings. For February there are already 33 User Group meetings planned. Also in this month are emBO++ and C++ Russia!

There are 4 new C++ User Groups: Nashua, NH, Vienna (Qt), Austin (Mentoring & Study Group), Montréal.

How C++ lambda expressions can improve your Qt code--Aurélien Gâteau

Lambdas are helping you.

How C++ lambda expressions can improve your Qt code

by Aurélien Gâteau

From the article:

In case you’ve missed it, lambda expression support has been added to C++ in C++11. In this article we are going to see how to take advantage of lambda expressions in your Qt code to simplify it and make it more robust, but also which pitfalls to avoid...

Stepanov-Regularity and Partially-Formed Objects vs. C++ Value Types -- Marc Mutz

Marc Mutz wrote in his recent article about the properties of default constructed object as required by Elements of Programming.

Stepanov-Regularity and Partially-Formed Objects vs. C++ Value Types

by Marc Mutz

From the article:

In this article, I will take a look at one of the fundamental concepts introduced in Alex Stepanov and Paul McJones’ seminal book “Elements of Programming” (EoP for short) — that of a (Semi-)Regular Type and Partially-Formed State.

Using these, I shall try to derive rules for C++ implementations of what are commonly called “value types”, focusing on the bare essentials, as I feel they have not been addressed in sufficient depth up to now: Special Member Functions.

zero-overhead C++17 currying & partial application -- Vittorio Romeo

This article briefly explains the concepts of "currying" and "partial application", then covers the design and C++17 implementation of a generic zero-overheader constexpr `curry` function.

zero-overhead C++17 currying & partial application

by Vittorio Romeo

From the article:

[...] many features introduced in the latest C++ standards allow functional patterns to thrive in your codebase, [...] like currying and partial application. [...] In this article we're going to:

* Introduce and briefly explain the two aforementioned concepts.

* Write a generic constexpr zero-overhead `curry` function in C++17.

* Analyze the generated assembly of the implementation to prove the lack of overhead.

[...]

Given a generic function object `f`, invoking `curry(f)` will return a curried/partially-applicable version of `f`. If `f` is constexpr-friendly, the returned one will be as well. `curry` should not introduce any overhead compared to hand-written currying/partial application.

Istream Idiosyncrasies -- Adi Shavit

Idiosyncrasies with istreams.

Istream Idiosyncrasies

by Adi Shavit

From the article:

A lot has been written and the vice and virtues of the C++ iostreams library.
While working on Argh, my little C++11 argument parsing library, I ran across some somewhat surprising idiosyncrasies and a few interesting lessons.