テンプレートパラメータを強制的に列挙型または列挙型クラスにする方法は?

ピエトロ

次のクラスを実装しました。

template<typename Enum>
class EnumDescription
{
    //TODO Force Enum to be an enum type

public:
    static std::string get( const Enum val );
};

これは期待どおりに機能しますが、ここでEnumテンプレートパラメーターをenum / enumクラスのみに制約したいと思います。

StoryTeller-Unslander Monica

C ++のフレーバーによって異なります。

C ++ 17

最も書きやすい方法は静的アサーションです

template<typename Enum>
class EnumDescription
{
    static_assert(std::is_enum_v<Enum>);

public:
    static std::string get( const Enum val );
};

C ++ 20

テンプレートにアドホック制約を指定できます

template<typename Enum> requires std::is_enum_v<Enum>
class EnumDescription
{

public:
    static std::string get( const Enum val );
};

または、おそらくより良いことに、再利用可能な概念で

template<typename E>
concept EnumType = std::is_enum_v<E>;

template<EnumType Enum>
class EnumDescription
{

public:
    static std::string get( const Enum val );
};

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

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

編集
0

コメントを追加

0

関連記事

列挙型をテンプレートパラメータに渡す方法

テンプレートタイプを列挙型クラスに制限する

テンプレートパラメータを指定せずに、クラステンプレートのスコープから列挙型を使用する

テンプレートパラメータで列挙型をintにキャストする

別のテンプレートパラメータに基づいて、テンプレートパラメータを1つの列挙型クラスとして修正するにはどうすればよいですか?

テンプレート列挙型パラメーターに基づいて動作を変更する

C ++はクラステンプレートに内部列挙型を使用します

任意の列挙型を取ることができるテンプレート(非型)パラメータークラスを作成できますか?C ++ 11

python:ifステートメントを列挙型に変換する方法またはPythonicにする方法

列挙型テンプレートをタイプテンプレートにマップする方法は?

インターフェイスまたは抽象クラスを単一のクラスと列挙型パラメーターに置き換える(Kotlin)

ローカルで宣言された列挙型クラスをテンプレートの非型パラメーターとして使用できますか?(gccはあいまいなエラーを出します)

列挙型パラメーターを使用してメソッドを単体テストする方法は?

Kotlinのデータクラス内に列挙型をネストする方法はありますか?

テンプレートページの定数または列挙型クラスの作成は効率的ですか?

プライベート/保護されたメンバーに基づいてクラス列挙型を割り当てることはできますか?

typescript 3.0で列挙型の「実装」キーにインターフェイスを強制する方法は?

クラスの列挙型プロパティを使用可能なすべての列挙型に設定する方法はありますか?

列挙型コンパレータを使用した抽象クラス:それを機能させる方法は?

オープンクラス内にクラスのプロパティを含む列挙型をネストすることは可能ですか?

Scala:コンストラクターに列挙型とその列挙型をパラメーターとして受け取る関数を与える

非型テンプレートパラメータとして異なる列挙型を使用することは可能ですか?

Web APIで列挙型パラメーターを渡すためのベストプラクティス

ジェネリックパラメータを列挙型に変換する方法は?

「コードの「クラス、インターフェイス、または列挙型が必要」を修正する方法

マテリアライズされた値がnullであるため、値タイプ「列挙型」へのキャストに失敗しました。結果タイプのパラメータまたはクエリは、null許容型を使用する必要があります

マテリアライズされた値がnullであるため、値タイプ「列挙型」へのキャストに失敗しました。結果タイプのパラメータまたはクエリは、null許容型を使用する必要があります

Visual Studio C ++コンパイラが列挙型をテンプレートパラメータとして拒否するのはなぜですか?

C ++ / CLIの列挙型クラスによるスイッチでケースステートメントを正しく呼び出す方法は?

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ