ホームページ >バックエンド開発 >C++ >C で変更されたテンプレート クラスのテンプレート Typedef を定義する方法

C で変更されたテンプレート クラスのテンプレート Typedef を定義する方法

DDD
DDDオリジナル
2024-12-17 00:57:25630ブラウズ

How to Define a Template Typedef for a Modified Template Class in C  ?

変更されたテンプレート クラスのテンプレート Typedef を定義する方法

型パラメータ N および M を持つテンプレート クラス行列を考えます。 Matrix と同等の次元を持つ "Vector" (列ベクトル)、typedef は次のとおりです。望ましい:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。