C++11 in Hall D Online

From GlueXWiki
Revision as of 15:57, 11 July 2013 by Wolin (Talk | contribs)

Jump to: navigation, search

Below I list a number of new C++11 features that should be interesting for use in the Hall D Online.

The most important ones concern programming safety, i.e. they plug safety loopholes in C++ that have been there since the beginning. The second type concern programming convenience, i.e. they make the code easier to write and understand.

Although we do not have any hard-and-fast programming rules for the online, I strongly feel the safety features should be used in all new code. I recommend use of the convenience features, but this is a personal decision. Even if you don't use them you should be familiar with them since they will appear in online code written by others.

Note that I take it for granted the old C++98 features will be used regularly (e.g. the STL).

My discussion below is brief. For a comprehensive discussion of C++11 see the Wikipedia article on C++11. See also the article on Ten C++11 Features Every C++ Developer Should Use.


Safety

override

You can explicitly mark a method to override a base class method. If no base class method with the same signature exists a compiler error is generated. This can save you much grief, trust me.


nullptr

NULL is replaced by the type-safe nullptr. The former is just a macro that gets replaced by 0 and its use is bug-prone.


static assert and type traits

You can make compiler time assertions about the code, e.g. some constant expression is positive. A compiler warning is generated if its not true. Using this along with type traits in templates allows you to make compile time assertion about variable types when templates are instantiated. E.g. you can assert that some types are numeric and catch errors at compile time when someone instantiates your template using strings or objects as the types.


smart pointers

move semantics


Convenience

auto

range-for

initializer lists

constructor chaining

thread library

lambdas

tuples

new algorithms

regular expressions