C++0x - explicit conversion

キャスト演算子(operator T)の先頭にexplicitを付けることによって
暗黙のキャストを防ぐことができるようになる

class Y {};
struct Z {
    explicit operator Y() const;
    // ...
};

void h(Z z)
{
    Y y1(z);     // OK
    Y y2 = z;    // エラー!
    Y y3 = (Y)z; // OK
}

C++0x言語拡張まとめ