Do we still need LLVM_HAS_INITIALIZER_LISTS?

Currently, LLVM_HAS_INITIALIZER_LISTS is set based on

  __has_feature(cxx_generalized_initializers) && !defined(_MSC_VER)

Based on the docs, we should be able to drop the _MSC_VER check now that
we've moved to VS2013. Can somebody confirm that?

The other problem is that GCC doesn't recognize __has_feature, so this
is essentially only enabled for clang. If we're keeping this check it
should really check the GCC version as well - they've had these for
quite a while now.

Currently, LLVM_HAS_INITIALIZER_LISTS is set based on

  __has_feature(cxx_generalized_initializers) && !defined(_MSC_VER)

Based on the docs, we should be able to drop the _MSC_VER check now that
we've moved to VS2013. Can somebody confirm that?

MSDN claims that VS2013 supports braced initializer list syntax:
https://msdn.microsoft.com/en-us/library/dn387583.aspx

I think we're safe to use it. I've made an experimental commit in
r229502 to see if any of the bots complain, and will revert if they
do. Otherwise, I think we're good to go.

~Aaron

One specific thing doesn't work: in-class initializers with brace syntax:

class Foo
{
   Bar bar{1, 2, 3};
};

They disabled this due to a silent wrong-code bug.

Sebastian

That's good to know, but also a coding style that we don't use (copy
initialization using = is preferred to direct initialization using {},
from what I learned recently). We should document both things in our
guidelines, though.

Thanks!

~Aaron