On 27-6-2014 21:33, Jon A. Cruz wrote:
On Fri, Jun 27, 2014, at 12:03 PM, Tavmjong Bah wrote:
> I noticed a bunch of 'for' loops in Liam's code and that got me
> wondering about using C++11 in the experimental branch as 'auto' is so
> much nicer that "std::map<SPDocument*,int>::iterator iter". When can
> start using C++11?
> I noticed that http://wiki.inkscape.org/wiki/index.php/C%2B%2B11
> shows results for one Window's compiler. Is there a test program we can
> run? Fedora 20 is using GCC 4.8 and clang 3.4; both support 'auto' (GCC
> since 4.4).
Well... there are two different issues "start using C++ 11" and "require
We can start using it now. The main question is when to make it a
requirement. (I've written lots of production code that compiles both
with and without C++ 11 features)
You mean to #ifdef the hell out of it? I am very much against this. We
already have this in our code, and it is terrible. For me "using C++11"
means we require it, full stop.
The secondary question is *which* parts of C++ 11 we can require,
which we have to defer. I believe last time I checked things for the day
job included versions of gcc had only about 40% C++ 11 coverage. We also
will need to take care to differentiate between C++ 11 features that are
present versus those that function correctly. :-)
So we'll need to add a chart of which compilers we need to stay
compatible with. Then we can cross-reference with the Apache page and
quickly update our chart.
This is what this page is about:
On Windows, we can easily use gcc 4.9 with devlibs64, and I hope after
release we can update devlibs 32bit to gcc 4.9 too (because of ABI
compatibility issues, we are stuck at 4.6) .
I agree we should be careful using too many C++11 features; notably the
threading stuff (it's great, but needs checking if all platforms support
For the record my computer is currently stuck with gcc 4.2.1 since
hardware itself (32-bit CPU) is limited to OSX 10.6 and that does not
I hope you realize that this is not really tenable for Inkscape to keep
compatible with such old compilers... (7 years is not that old in human
terms, but it is a lot in computer terms)
With the current pace of development, any code one writes now will live
for a long time. Therefore, I feel it is important we make the switch to