読者です 読者をやめる 読者になる 読者になる

GCC 4.4動いた!

C++ GCC

ネタ元:blog.y4su0.com - gcc 4.3.1 を Windows で使ってみる


Windows用にビルドされたGCCのバイナリがあると聞いたのでインストールしてみました。

ここからgcc 4.4-20090123のsnapshot版をダウンロードして、インストーラを使ってインストール


とても簡単です。
(cygwinは事前インストールが必要cygwinをインストールしなくても、コマンドプロンプトだけで実行可能です)


まず言語仕様

#include <vector>

// Defaulted and Deleted Function
struct X {
    X() = delete;
    X(const X&) = default;
};

// Strongly-typed enums
enum class E : int { A = 0, B };

// inline namespace
namespace std {
    inline namespace tr1 {
        template <class T, int N>
        class array {};
    }
}

// 戻り値の型を後置する関数宣言構文(そのうち変わるかも)
template <class T, class U>
auto plus(T a, U b) -> decltype(a + b) { return a + b; }

int main()
{
    std::vector<int> v = {1, 2, 3}; // Initializer Lists

    const auto& a = v; // auto-typed variables

    // スコープがあるenum
    E e = E::A;

    // stdでもstd::tr1でもarrayにアクセス可
    std::array<int, 3> ar;
    std::tr1::array<int, 3> arr;

    int result = plus(1, 2);
}

動いた〜。


次にライブラリ


chrono

#include <chrono>

using namespace std::chrono;

int main()
{
    // 500ナノ秒待つ
    auto go = system_clock::now() + nanoseconds(500);
    while (system_clock::now() < go);
}


forward_list

#include <iostream>
#include <iterator>
#include <forward_list>
#include <algorithm>

using namespace std;

int main()
{
    forward_list<int> ls;

    ls.push_front(3);               // 先頭に3を追加
    ls.insert_after(ls.begin(), 1); // 先頭の後ろに1を追加

    size_t size = distance(ls.begin(), ls.end()); // 要素数取得

    copy(ls.begin(), ls.end(), ostream_iterator<int>(cout, "\n"));
}


Placement Insert

#include <vector>

struct hoge {
    hoge(int a, int b, int c) {}
};

int main()
{
    std::vector<hoge> v;

    v.emplace_back(1, 2, 3);
    v.emplace(v.begin(), 3, 2, 1);
}

使ってないけどとかもありますよ。



GCC 4.4のC++0x対応状況は以下を参照

Status of Experimental C++0x Support in GCC 4.4