ReadyTalk/avian — pull request #291 by joshuawarner32 (2014-07-12 23:55:22+00:00)
Title: Begin using c++11 features

This is mostly to start a discussion; no need to merge this immediately.

See here for reference on c++11 feature support in compilers: https://wiki.apache.org/stdcxx/C++0xCompilerSupport

I'm using five features here:
* `nullptr` constant - basically, just a `0` constant that's only valid for pointer types - since gcc 4.6 and MSVC 10
* Range-based / enhanced for loops - since gcc 4.6 and MSVC 11
* `auto` (deduced variable types) - since gcc 4.4 and MSVC 10
* variadic templates - since gcc 4.4 and MSVC 11
* constexpr - since gcc 4.6 with initial support in the latest CTP of MSVC 13 (2014)

(All these are available in clang 3.1 and up)

Depending on gcc 4.6 means on debian squeeze and wheezy, we'd have to use a the non-default, explicitly versioned 'gcc-4.6' package (which I believe adds -4.6 to the name, so we'd have to adjust the makefile).

With respect to MSVC support, we can either:
* Not use constexpr (i.e. not apply that commit)
* Not support anything but that latest CTP (which may or may not work, since the support is apparently incomplete; I haven't tried it yet)
* Use some preprocessor magic to get rid of the constexpr keyword on msvc and live with potentially sub-par performance.

Is anyone using a current version of avian with MSVC? I tried a while back and gave up.

Thoughts? Concerns?