変更されたテンプレート クラスのテンプレート Typedef を定義する方法
型パラメータ N および M を持つテンプレート クラス行列を考えます。 Matrix
typedef Matrix<N,1> Vector<N>;
ただし、このアプローチではコンパイル エラーが発生します。
代替案と解決策
C 11 ではエイリアス宣言が導入されています は typedef を一般化して許可しますtemplate:
template <size_t N> using Vector = Matrix<N, 1>;
C 11 以降では、型 Vector<3> は、 Matrix<3, 1> と同等です。
C 03 の回避策
C 11 より前の場合、次の近似があります:
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
ここで、Vector::type は以下と同等です。マトリックス。
以上がC で変更されたテンプレート クラスのテンプレート Typedef を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。