Krita/C++11

From KDE Community Wiki
Revision as of 01:26, 15 October 2015 by Miabrahams (talk | contribs) (Add list of features for consideration)

General links to C++11 and Qt

Note: as would be expected from those interested in hot new technology, the writers of most of these links demonstrate Silicon Valley levels of extreme optimism. Take this with a grain of salt. There is no such thing as a free lunch.

Particular Features

Type Inference (auto)

Motivation:

Drawbacks:

Recommendation:

Range-based for loop

Motivation:

Drawbacks:

Recommendation:

Universal and General Initialization

Motivation: Member Initializers Mixed uniform initialization

Drawbacks:

Recommendation:

Lambda

Motivation: Lambda expressions for slots

Drawbacks:

Recommendation:

constexpr

Motivation:

Drawbacks:

Recommendation:

Override and final

Motivation:

Drawbacks:

Recommendation:

<algorithm>

Motivation:

Drawbacks:

Recommendation:

nullptr

Motivation:

Drawbacks:

Recommendation:

Deleted and default class members

Motivation:

Drawbacks:

Recommendation:

unique_ptr

Motivation:

Drawbacks: unique_ptr is unable to be copied, and therefore cannot be used inside Qt classes. For example QVector<std::unique_ptr> is invalid, because QVector requires its members can be copied. This makes converting to unique_ptr arduous.

Recommendation:

Performance-related (rvalues)

http://thbecker.net/articles/rvalue_references/section_01.html

Move Constructors

Motivation:

Drawbacks:

Recommendation:

Reference Qualifiers

Motivation:

Drawbacks:

Recommendation:

Other C++11 features, less immediately useful

  • Extended Unions (already have QVariant)
  • New literal types (already have QString)
  • Threads (Qt/KDE provide threading support already)
  • shared_ptr (unique_ptr Qt already provides a
  • Local types (mostly for advanced template programming)
  • static_assert
  • variadic templates