Hacker News new | ask | show | jobs
by pjmlp 4170 days ago
Microsoft is doing a mix of C++11 and C++14 support.

http://channel9.msdn.com/Events/Visual-Studio/Connect-event-...

Still, outside the open source world, from all vendors selling compilers, Microsoft is the most up to date.

Before anyone mentions ICC, no not even version 15 is fully compliant.

https://software.intel.com/en-us/articles/c0x-features-suppo...

IBM just realeased XLC with partial C++11 support.

Others are even worse.

2 comments

And odd bits of proposed C++17. Picking the low-hanging fruit, I imagine, based on their discussion of the difficulty in supporting other features.

I'm waiting impatiently for expression SFINAE. I like the features of C++ that let you write dynamic-esque code that's evaluated at compile time. It enables little bits of cleverness that save you from large complicated solutions.

> outside the open source world

Which is quite large, considering that Clang and GCC are the standard compilers for just about every major non-Microsoft platform, including the mobile ones.

> Which is quite large, considering that Clang and GCC are the standard compilers for just about every major non-Microsoft platform, including the mobile ones.

I have worked with a few enterprise customers (Fortune 500) that only allowed the compilers from the respective OS vendors. And new versions required an approval process to be followed.

There is more out there than just GNU/Linux, Mac OS X, *BSD and Android.

Granted, this was around 10 years ago, but I doubt the situation changed at all in such environments.

The C++17 bits are things proposed by people on the VC++ team, since verifying that something is actually implementable is an important part of writing a good proposal.
By my count, none of VC 2015 RTM's C++17 features will have been proposed by MS. N3922 auto and N4086 trigraphs were proposed by Googlers. Same for another Core feature that might be checked in. In the Library, I just checked in void_t, invoke(), and trivially copyable reference_wrapper, none of which I proposed (or anyone else at MS). I did propose auto_ptr/etc.'s removal which was voted into C++17, but it's too late for me to remove that stuff from 2015 RTM.
I suppose I could see the "most up to date" argument, but Intel looks like it has the most complete commercial compiler at the moment for C++11.

But certainly, the next most complete support for C++11 in a commercial compiler might just be from Oracle Solaris Studio (which, despite the name, is available for Solaris and Linux both):

http://docs.oracle.com/cd/E37069_01/html/E37071/gncix.html#s...

It supports all C++11 features excluding: C++ 11 concurrency and atomic operations, and User-defined literals.

Notably, Oracle Solaris Studio is also one of the few compilers to include full C99 support.

> I suppose I could see the "most up to date" argument, but Intel looks like it has the most complete commercial compiler at the moment for C++11.

Except that some of the features are only available on UNIX based OS. So you cannot use them if you are after portable code.

If an ANSI C++ feature is currently OS specific on a multi-platform compiler, on my manual it isn't supported.

> But certainly, the next most complete support for C++11 in a commercial compiler might just be from Oracle Solaris Studio

Interesting. I wasn't aware of it.

The last time I spend coding on Solaris was around 2011.

> Notably, Oracle Solaris Studio is also one of the few compilers to include full C99 support.

Even as C++ fanboy, I do concede it is to be expected that a UNIX vendor does support the latest C standards.

After all, it is because of UNIX that we got C and I don't see it being re-written into something else.

There I would like that at least they support "Bounds-checking interfaces (Annex K)" from C11, which is optional.

  There I would like that at least they support
  "Bounds-checking interfaces (Annex K)" from C11,
  which is optional.
The bounds-checking interfaces are really something that has to be provided by libc, so Solaris itself will provide those.

Although it isn't highlighted in the release notes in an obvious way, most of the support for C11 is also available in the 12.4 release of the Solaris Studio compiler. The primary things missing are the same things they don't have for C++11: concurrency and atomic primitives.