C++コンパイラの状況
// newfeaturs.cpp #include "stdafx.h" // MSC用 // 静的アサート static_assert(sizeof(unsigned short int) == 2, "ushort must have size 2."); // ヌルポインタ void *p = nullptr; // 自動型付け auto a = 0.5f; decltype(a) b = a; auto auto_func(int x) -> decltype(x) { return x; } // ラムダ式 auto func = []{ return 0; } ; // ここから先はMSVS2010のMSCはサポートしてない、残念 #ifndef _MSC_VER // メンバのサイズ // VC2010では使えない struct Foo { int a; }; size_t size = sizeof(Foo::a); // enum class // VC2010では使えない enum class Color { Red, Green, Blue }; // foreach文 // VC2010では使えない void pirnt_values() { int values[] = {1, 2, 3}; for(auto v : values) printf("%d\n", v); } #endif
gcc 4.6.2では、-std=c++11 は使えない。-std=c++0x なら使える。
$ g++ --version
g++.exe (GCC) 4.6.2
opyright (C) 2011 Free Software Foundation, Inc.
his is free software; see the source for copying conditions. There is NO
arranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.$ g++ -std=c++0x -c newfeatures.cpp
gcc 5.1.0 (TDM GCC)では、-std=c++11 が使える。
> gcc --version
gcc.exe (tdm64-1) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.