Le 02/08/2016 à 00:18, Richard Heck a écrit :
On 08/01/2016 06:49 PM, Guillaume Munch wrote:
+#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 6)

I meant to ask before: Even if we're requiring gcc >= 4.6 (right?), is
it worth changing this to:

(__GNUC_MINOR__ <= 6)

just in case someone ever wanted to try to compile with 4.5? Or would
that be impossible anyway?

gcc 4.5 is going to fail because of ranged for-loops and user-defined
move operators: https://gcc.gnu.org/gcc-4.5/cxx0x_status.html

More generally, do we need something here for
other compilers?

2.3 requires a C++11 "complier" (gcc 4.8, MSVC 2015, as for clang there
was no decision on a minimal version as far as I remember, do not
hesitate to correct me). For gcc 4.6 we made an exception until Ubuntu
12.04 is phased out, this is why I added the exceptional code. After gcc
4.6, gcc 4.8 will be the oldest on the market, which is why, I think, we
do not worry about 4.7 (which would miss thread_local too).


Actually, maybe a better way to do it would be to invert the test. E.g.:

#if [CONDITIONS ARE GOOD]
        thread_local QVector<QPoint> points(32);
#else
        static QVector<QPoint> points(32);
#endif

Maybe, but this is really meant to be temporary.


Maybe we could just add a test to configure to see whether we have
thread_local?


thread_local is part of C++11, so no need to test for it like
make_unique (which is not part of C++11). Moreover, if we detected that
a compiler does not implement it, I do not think that there's anything
we could do about it.

Re the other message, vector<bool> is ok (at least now), unless there it
is a rule to avoid it (but in this use case it would be for the
principle only).

Reply via email to