Using standard MinGW (cc 4.9.3), I couldn’t compile C++11 test programs without lots of errors. The answer: use -std=gnu++11 rather than -std=c++11. Obvious, right?…
Test program:
#include <memory> #include <iostream> using namespace std; int main() { shared_ptr<int> x(new int(42)); cout << (*x) << endl; return 0; }
Error messages with “c++11”:
$ g++ --std=c++11 -o test test.cpp In file included from c:\mingw\include\wchar.h:208:0, from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\cwchar:44, from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\bits\postypes.h:40, from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\iosfwd:40, from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\memory:72, from test.cpp:1: c:\mingw\include\sys/stat.h:173:14: error: '_dev_t' does not name a type struct _stat __struct_stat_defined( _off_t, time_t ); ^
and many, many more (444 lines total).
By contrast:
$ g++ --std=gnu++11 -o test test.cpp $ ./test.exe 42 $
Much better!
Exercise for the reader: try TDM-GCC and tell me in the comments whether it works with c++11.