このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

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.

> gcc -std=c++11 -c .\newfeatures.cpp

Visual C++の2010でも一部はコンパイルできる。