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