このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。 画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。
-1- A template defines a family of classes or functions. template-declaration: export[opt] template < template-parameter-list > declaration template-parameter-list: template-parameter template-parameter-list , template-parameter
The declaration in a template-declaration shall * declare or define a function or a class, or * define a member function, a member class or a static data member of a class template or of a class nested within a class template, or * define a member template of a class or class template.
A template-declaration is a declaration. A template-declaration is also a definition if its declaration defines a function, a class, or a static data member.
-2- A template-declaration can appear only as a namespace scope or class scope declaration. In a function template declaration, the declarator-id shall be a template-name (i.e., not a template-id). [Note: in a class template declaration, if the declarator-id is a template-id, the declaration declares a class template partial specialization (temp.class.spec). ]
-3- In a template-declaration, explicit specialization, or explicit instantiation the init-declarator-list in the declaration shall contain at most one declarator. When such a declaration is used to declare a class template, no declarator is permitted.
8章をみるとdeclaratorについてはこう書いてある A declarator declarares a single object, function, or type within a declaration. Init-declarator-list appearing in a declaration is a comma-separated sequence of declarators. つまり宣言文のなかで、宣言される一つ以上の対象のことらしい。
template-declarationという集合の中の、 完全特殊化と、explicit instantiationについて書いてある。 ここは分り難い。most one declaratorとは何のことなのか? なんのことなのか分らん。英語力が足りない。
-4- A template name may have linkage (basic.link). A template, a template explicit specialization (temp.expl.spec), or a class template partial specialization shall not have C linkage. If the linkage of one of these is something other than C or C++, the behavior is implementation-defined. Template definitions shall obey the one definition rule (basic.def.odr). [Note: default arguments for function templates and for member functions of class templates are considered definitions for the purpose of template instantiation (temp.decls) and must also obey the one definition rule. ]
-5- A class template shall not have the same name as any other template, class, function, object, enumeration, enumerator, namespace, or type in the same scope ( basic.scope), except as specified in (temp.class.spec). Except that a function template can be overloaded either by (non-template) functions with the same name or by other function templates with the same name (temp.over), a template name declared in namespace scope or in class scope shall be unique in that scope.
何かを説明するときに対象の特徴を元にリストを挙げるわけだけど、リストの全てとは // class {名前空間,クラス{,テンプレート},関数{,テンプレート}}内のクラス{,テンプレート} // function {クラス{,テンプレート}のメンバとしての,名前空間内の}{,インライン}関数{,テンプレート}
というかんじでしょうか。存在するスコープと属性を元にリストアップ。 一覧が見たい人は、for str in 上の文字列;do echo $str;done とでもしてみてください。 クラスに関しては10通り。関数に関しては12通り。まだまだあるかもしれません。
-6- A namespace-scope declaration or definition of a non-inline function template, a non-inline member function template, a non-inline member function of a class template or a static data member of a class template may be preceded by the export keyword. If such a template is defined in the same translation unit in which it is declared as exported, the definition is considered to be exported. The first declaration of the template containing the export keyword must not follow the definition.
-7- Declaring a class template exported is equivalent to declaring all of its non-inline function members, static data members, member classes, member class templates and non-inline function member templates which are defined in that translation unit exported.
-8- Templates defined in an unnamed namespace shall not be exported. A template shall be exported only once in a program. An implementation is not required to diagnose a violation of this rule. A non-exported template that is neither explicitly specialized nor explicitly instantiated must be defined in every translation unit in which it is implicitly instantiated (temp.inst) or explicitly instantiated (temp.explicit); no diagnostic is required. An exported template need only be declared (and not necessarily defined) in a translation unit in which it is instantiated. A template function declared both exported and inline is just inline and not exported.
-9- [Note: an implementation may require that a translation unit containing the definition of an exported template be compiled before any translation unit containing an instantiation of that template. ]
|18.4.1.1 2,6,11 / 18.4.1.2 2,6,10 |Replaceable: a C++ program can define a function with | this function signature that displaces the default | version defined by the C++ Standard library.