Translations of this page?:

typename

テンプレートの型パラメータの指定

templateの引数リストのtypenameは型パラメータのclassと置き換えて使用することができます。コンパイラから見ると、どちらが使用されても違いはありませんが、Alexandrescu氏はテンプレート引数としてclassstructを期待しているときはclassを使い、typenameはそれ以外の型のときに使用するのを推奨しています。このキーワードは単純にソースコードの読みやすさを向上させるためのものです。

依存名の曖昧さの除去

typenameキーワードは依存名を表すのにも使用します。テンプレート定義の中で型を表していることを明示します。

struct Foo {
  typedef int Type;
};
 
template<class T>
struct Bar {
  typedef typename T::Type BarType; // typedef内での使用
  void baz() {
     typename T::Type instance;     // 宣言の中での使用
  }
};
 
typedef Bar<Foo> FooBar;

関連トピック: class, template

 
• • • SitemapRecent changesRSScc