Effective Qt (2017 edition)
The title of this talk pays tribute to the "Effective Qt" columns, a series of blog posts started by Marc Mutz many years ago, whose title was in turn inspired by Scott Meyer's book series. The purpose of the columns was to provide in-depth explanations about Qt data structures and design patterns to C++ developers, who wanted to know more about how to use Qt core classes, and how to use them "effectively". This talk aims to be an up-to-date version of (some of) the advices in the columns, in the light of the major changes introduced to core classes in Qt 5's lifetime (including changes that will come with Qt 5.10, scheduled to be released at the end of 2017). Moreover, we will see how the language and Standard Library features added to latest C++ standards interact with long-established practices when developing Qt code. The talk is structured as a series of best practices, guidelines and tips&tricks, learned from many years of experience developing Qt-based projects, as well as the significant effort spent developing Qt itself and steering its evolution. For each advice, a technical discussion of the rationale behind it will be provided, and possibly some indication about future developments and what to expect in upcoming Qt versions. The topics mentioned in this talk cover many areas in Qt, and should contain something new or interesting for Qt developers using C++, hopefully helping them to build quality libraries and applications. The main focus areas will be around Qt containers (and their algorithms) as well as Qt string classes. Attendees are expected to have some working knowledge of Qt C++ APIs (and especially C++ APIs in QtCore).