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

GCC 4.5から使用可能なC++0x機能

GCC C++

以下の4つです。

#include <iostream>
#include <vector>
#include <algorithm>

template <class T>
class smart_ptr {
    T* p_;
public:
    smart_ptr() : p_(0) {}

    explicit operator bool() const // 1.明示的な型変換演算子
    {
        return p_ != 0;
    }
};

int main()
{
    smart_ptr<int> p;
    if (p) {}
//  int x = p + 1; // NG

    const std::vector<int> v = {1, 2, 3};

    // 2.ラムダ式
    std::for_each(v.begin(), v.end(), [](int x) { std::cout << x << std::endl; });

    // 3.ローカルクラスをテンプレート引数として使用
    struct local {};
    std::vector<local> l;

    // 4.Raw String Literal
    std::string path = R"[C:\a.txt]";
    std::cout << path << std::endl; // 「C:\a.txt」と出力される
}

constexprもこっそり入ってますが、キーワードがあるだけのようです。
十分な実装はできてるけどGCC 4.5には間に合わなかったそうです。(パッチはあるらしい)


追記:
3つではなく4つでした。
Raw String Literalを追記しました。