質問

通常の(弱い)列挙型がある場合は、次のように、列挙型の値を非型テンプレートパラメータとして使用できます。 ジェネラコディセタグプレ

それを次のように呼びます:magic<Cat>(t)

私が見る限り、強く型付けされた列挙型があり、列挙型をハードコーディングしたくない場合は、次のようになります。 ジェネラコディセタグプレ

そして今、私は次のように書かなければなりません:magic<Animal, Animal::Cat>(t)、これは冗長に思えます。

列挙型クラスと値の両方を入力しないようにする方法はありますか? ジェネラコディセタグプレ

役に立ちましたか?

解決

C ++ 17を使用できる場合は、このようにすることができます ジェネラコディセタグプレ

デモ: http://coliru.stacked-crooked.com/a/9ac5095e8434c9da

他のヒント

申し訳ありませんが、そのことをお伝えする必要があります

できません

マクロを取得し、怖い名前のヘッダーに入れて、同僚のクリーンアップスクリプトから保護します。最善の結果を期待します。

タイプではなく、enumの値のみに関心がある場合は、constexpr関数を使用して値を整数に変換し、タイプ名を繰り返さないようにする必要があります。 ジェネラコディセタグプレ

ただし、他の人がすでに指摘しているように、これをタイプにも依存させたい場合は機能しません。

この質問には承認された回答(賛成)があります。

自分のコードをリファクタリングしているときに、より完全な解決策を見つけました:

ステップ1:私が書いていたコードを使用する: ジェネラコディセタグプレ

ステップ2:クライアントコード: ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top