説明したくない事。以下のコードがコンパイルできること。
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