テンプレートパラメータを構造体のようなものに保存する方法は?

マイケル

コンパイル時にいくつかの構成を実行したいシミュレーションコードがあります。たとえば、ディメンション、データ型、および低レベルの操作(インライン化のためのコンパイル時)を含むクラスを定義する必要があります。

何かのようなもの:

template <int DIMENSION, class DATATYPE, class OPERATIONS>
class Simulation{ ... }

template <int DIMENSION, class DATATYPE, class OPERATIONS>
class SimulationNode{ ... }

template <int DIMENSION, class DATATYPE, class OPERATIONS>
class SimulationDataBuffer{ ... }

まず、各クラスのパラメータセット全体を記述するのは非常に面倒です。次に、さらに悪いことに、追加のパラメーターを導入する必要があり、すべてのクラスを変更する必要がある可能性があります。

テンプレートパラメータの構造体のようなものはありますか?

何かのようなもの

struct {
  DIMENSION = 3;
  DATATYPE = int;
  OPERATIONS = SimpleOps;
} CONFIG;

template <class CONFIG>
class Simulation{ ... }

template <class CONFIG>
class SimulationNode{ ... }

template <class CONFIG>
class SimulationDataBuffer{ ... }
TartanLlama

確かに、タイプのエイリアスとのstaticメンバーを提供するクラステンプレートを作成しますint

template <int DIMENSION, class DATATYPE, class OPERATIONS>
struct Config
{
    static constexpr int dimension = DIMENSION;
    using datatype = DATATYPE;
    using operations = OPERATIONS;
};

次に、次のように使用できます。

template <class CONFIG>
class Simulation{
    void foo() { int a = CONFIG::dimension; }
    typename CONFIG::operations my_operations;
}

using my_config = Config<3, int, SimpleOps>;
Simulation<my_config> my_simulation;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テンプレートクラスの構造体を独自の構造体で使用するにはどうすればよいですか?

分類Dev

テンプレートクラスの構造体を独自の構造体で使用するにはどうすればよいですか?

分類Dev

データ構造がテンプレートパラメータの場合、操作によってイテレータが無効になるかどうかを確認するにはどうすればよいですか?

分類Dev

可変個引数テンプレートパラメータで構造体を使用すると、2つのテンプレートが同時にインスタンス化されるのはなぜですか?

分類Dev

構造体のメンバーによってテンプレートを推測する方法

分類Dev

Racketでコンパイル時の構造体メタデータを提供しながら構造体コンストラクターをオーバーライドするにはどうすればよいですか?

分類Dev

異なるテンプレートパラメータ値を持つテンプレート構造体のC ++アクセス保護メンバー

分類Dev

関数パラメーターの構造体タイプが異なる重複コードを回避するにはどうすればよいですか?

分類Dev

不明な構造体を(実行時に)テンプレートパラメーターとして渡す

分類Dev

クラス/構造体の内外のテンプレートパラメータ

分類Dev

C ++で追加のテンプレートパラメータを使用してテンプレート構造体を拡張する

分類Dev

テンプレートパラメータの再マップ構造体

分類Dev

new []を含む構造体の配列は、その構造体にコンストラクターがある場合は機能しないようです。

分類Dev

構造体のスライスをテンプレートに渡してGolangで反復する方法は?

分類Dev

Userdefaults エラー swift のカスタム構造体配列にドキュメント パスを保存する

分類Dev

nullまたはオプションのDLL構造体パラメータを処理するにはどうすればよいですか

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

C / C ++。bt(バイナリテンプレート)の構造体のようなラップされた関数をJava8に変換する

分類Dev

テンプレート内のタプルを構造体に変換する

分類Dev

UPDATEステートメントでIFタイプの構造体を使用するにはどうすればよいですか?

分類Dev

構造体の可変個引数テンプレートパラメータの完全な警告

分類Dev

構造体への同じポインター配列が異なるタイプの構造体を指すようにすることは可能ですか?

分類Dev

テンプレートパラメータが構造体/クラスであるかどうかを確認するにはどうすればよいですか?

分類Dev

別の構造体がメンバーとして共用体にラップされている構造体が、明示的なデフォルトコンストラクターなしでコンパイルされないのはなぜですか?

分類Dev

ファンクターのパラメーターシグネチャを制約して、パラメーターが不特定の等価型を構造体に提供できるようにする方法はありますか?

分類Dev

配列構造体にはパラメーターなしのコンストラクターが必要です

分類Dev

最も内側のテンプレートパラメータタイプを取得するにはどうすればよいですか?

分類Dev

テンプレートクラス/構造体のメンバー関数アドレスを関数パラメーターとして渡す

Related 関連記事

  1. 1

    テンプレートクラスの構造体を独自の構造体で使用するにはどうすればよいですか?

  2. 2

    テンプレートクラスの構造体を独自の構造体で使用するにはどうすればよいですか?

  3. 3

    データ構造がテンプレートパラメータの場合、操作によってイテレータが無効になるかどうかを確認するにはどうすればよいですか?

  4. 4

    可変個引数テンプレートパラメータで構造体を使用すると、2つのテンプレートが同時にインスタンス化されるのはなぜですか?

  5. 5

    構造体のメンバーによってテンプレートを推測する方法

  6. 6

    Racketでコンパイル時の構造体メタデータを提供しながら構造体コンストラクターをオーバーライドするにはどうすればよいですか?

  7. 7

    異なるテンプレートパラメータ値を持つテンプレート構造体のC ++アクセス保護メンバー

  8. 8

    関数パラメーターの構造体タイプが異なる重複コードを回避するにはどうすればよいですか?

  9. 9

    不明な構造体を(実行時に)テンプレートパラメーターとして渡す

  10. 10

    クラス/構造体の内外のテンプレートパラメータ

  11. 11

    C ++で追加のテンプレートパラメータを使用してテンプレート構造体を拡張する

  12. 12

    テンプレートパラメータの再マップ構造体

  13. 13

    new []を含む構造体の配列は、その構造体にコンストラクターがある場合は機能しないようです。

  14. 14

    構造体のスライスをテンプレートに渡してGolangで反復する方法は?

  15. 15

    Userdefaults エラー swift のカスタム構造体配列にドキュメント パスを保存する

  16. 16

    nullまたはオプションのDLL構造体パラメータを処理するにはどうすればよいですか

  17. 17

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  18. 18

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  19. 19

    C / C ++。bt(バイナリテンプレート)の構造体のようなラップされた関数をJava8に変換する

  20. 20

    テンプレート内のタプルを構造体に変換する

  21. 21

    UPDATEステートメントでIFタイプの構造体を使用するにはどうすればよいですか?

  22. 22

    構造体の可変個引数テンプレートパラメータの完全な警告

  23. 23

    構造体への同じポインター配列が異なるタイプの構造体を指すようにすることは可能ですか?

  24. 24

    テンプレートパラメータが構造体/クラスであるかどうかを確認するにはどうすればよいですか?

  25. 25

    別の構造体がメンバーとして共用体にラップされている構造体が、明示的なデフォルトコンストラクターなしでコンパイルされないのはなぜですか?

  26. 26

    ファンクターのパラメーターシグネチャを制約して、パラメーターが不特定の等価型を構造体に提供できるようにする方法はありますか?

  27. 27

    配列構造体にはパラメーターなしのコンストラクターが必要です

  28. 28

    最も内側のテンプレートパラメータタイプを取得するにはどうすればよいですか?

  29. 29

    テンプレートクラス/構造体のメンバー関数アドレスを関数パラメーターとして渡す

ホットタグ

アーカイブ