First of all, see C ++ 11 Experimental Support Status in GCC 4.8 . Only one proposal has not yet been formally implemented. Then see C ++ 11 implementation status in libstdc++ . As you can see, some functions are not yet implemented. However, we can state that C ++ 11 support in GCC is more or less complete and convenient.
Now about Windows: perhaps definitely the best native (not Cygwin !) GCC port, which I personally consider to be manufacturing quality, MinGW-w64 . You can download it here . The current (at the time of writing) latest version is based on GCC 4.8.2. It already supports std::thread . What more, it offers all possible options:
- 64-bit targets
- 32-bit targets
- Win32 streams
- POSIX streams
- SEH exceptions;
- DWARF exceptions;
- SJLJ exceptions.
Note:
Be careful when choosing a distribution to boot: for std::thread to be available, you need one that has POSIX threads.
In addition, I confirm that I myself have created Qt 4.8.4 and 4.8.5 several times and even aimed at this 64-bit toolchain. But that's not all, here is a list of some of the highlights that I personally created using MinGW-w64:
I think that I can create such huge and varied code bases as 64-bit targets with a good old GCC for Windows - this is a wonderful achievement of the MinGW-w64 development team. This once again proves the quality of the tool chain.
Qt 5
I recently built Qt 5.1.1 using the MinGW-w64 4.8.2 x64 targeting. In general, it went quite smoothly, but there are a few minor issues that need to be paid before assembly. I carefully collected all the necessary fixes and automated the whole process of fixing, building and installing with a simple script package. If you're interested, check out Qt for Windows . The use is so simple that I will skip commenting and just let you guys read the script package. Keep in mind that you need Unix patch.exe apply patches that you could get, for example, from MSYS or MSYS2 (see below). You can get the source code for Qt 5.1.1 here .
Note:
It does not seem reasonable to reinvent the wheel (by supporting personal build scripts and fixes for Qt). MSYS2 (see below) now takes care of everything . That is, if you need to rebuild Qt with various parameters and / or flags, simply edit the corresponding PKGBUILD file locally and use the makepkg-mingw utility accordingly.
Note:
In fact, the Qt project officially recommends using MinGW-w64 and MSYS2 .
About MSYS2
This was not set directly, but I would like to add it here, since it is the sister of the MinGW-w64 project, and it is very useful for anyone who needs to develop their own Windows software using an environment like Unix.
Those of you who have ever used the original MSYS probably know how old he is. It has not been improved for centuries, and all Unix utilities there are already terribly outdated.
The guys who provide the MinGW-w64 builds (listed above) now also provide the MSYS2 builds which you can download here . Recently, he left the beta version, so be sure to check out the latest version. It is built for both x86 and x64 architectures (with the MinGW-w64 instrumental grid itself). All utilities are updated to the latest versions. For example, you can already enjoy such things as: Bash 4.2, Make 3.99, Git 1.8.4 and many others; which run natively from Windows!
Note:
Be sure to check out their Wiki .
A brief history behind MinGW-w64
The original MinGW was very slow in improvements, and its developers did not even think of adding 64-bit support for generating target objects. One ambitious guy, Kai Tiz, took over and forked it, because his company needed to build 64-bit targets in Windows. This is how the MinGW-w64 project was born. Although the main goal was to add 64-bit support, developers in many aspects improved the tool chain and addressed many other problems. Since then, the MinGW-w64 project has grown and is now far superior to MinGW in quality. When MinGW-w64 invited MinGW to join the houses and work together, MinGW developers showed an inadequate reaction and refused to cooperate. As a result, today there are 2 projects with a similar name, which sometimes causes confusion, but the differences in quality and support speak for themselves.