2010-01-14

C++0x本:説明したくない事

説明したくない事。以下のコードがコンパイルできること。

template<class T1, class T2 = int> class A;
template<class T1 = int, class T2> class A {};

// デフォルト引数を後で指定できる。
void f(int) ;
void f(int = 0) {};

int main()
{
    // A<int, int>
    //複数のdeclarationにおける、テンプレート引数のデフォルト引数はマージされる。
    A<> a ;

    // 関数から関数ポインタへのキャスト
    // アンパサンドを省略できる。
    void(*p)(int) = f ;

    // 初期化しなくてもいい。
    int x ;

    // sizeofには括弧がいらない。
    sizeof x ;

    // C99互換のuglyにも程がある整数型。
   // <cstdint>を使うべき。
    long long int y ;
}

これらは、ほんの一例である。かなり原理主義な部分もある。

しかし、テンプレート引数のデフォルト引数のマージを除いて、実際にこれらは使われている。解説しないわけにはいかない。

追記:文字列リテラルを非constなポインタに、暗黙的に変換することはできなくなった。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.