強く型付けされた列挙によるテンプレート引数の推定
-
29-10-2019 - |
質問
通常の(弱い)列挙型がある場合は、次のように、列挙型の値を非型テンプレートパラメータとして使用できます。 ジェネラコディセタグプレ
それを次のように呼びます:magic<Cat>(t)
私が見る限り、強く型付けされた列挙型があり、列挙型をハードコーディングしたくない場合は、次のようになります。 ジェネラコディセタグプレ
そして今、私は次のように書かなければなりません:magic<Animal, Animal::Cat>(t)
、これは冗長に思えます。
列挙型クラスと値の両方を入力しないようにする方法はありますか? ジェネラコディセタグプレ
解決
C ++ 17を使用できる場合は、このようにすることができます ジェネラコディセタグプレ
他のヒント
申し訳ありませんが、そのことをお伝えする必要があります
できません
マクロを取得し、怖い名前のヘッダーに入れて、同僚のクリーンアップスクリプトから保護します。最善の結果を期待します。
タイプではなく、enum
の値のみに関心がある場合は、constexpr
関数を使用して値を整数に変換し、タイプ名を繰り返さないようにする必要があります。
ジェネラコディセタグプレ
ただし、他の人がすでに指摘しているように、これをタイプにも依存させたい場合は機能しません。
この質問には
自分のコードをリファクタリングしているときに、より完全な解決策を見つけました:
ステップ1:私が書いていたコードを使用する: ジェネラコディセタグプレ
ステップ2:クライアントコード: ジェネラコディセタグプレ
所属していません StackOverflow