次のように、テンプレート クラス/関数が入力型の明示的なメンバーに頻繁にアクセスするライブラリがあります。
template <
typename InputType>
bool IsSomethingTrue(
InputType arg1) {
typename InputType::SubType1::SubType2 &a;
//Do something
}
ここで、SubType1
とSubType2
は、それ自体が をインスタンス化するために使用されたジェネリック型ですInputType
。for に渡すのに有効なライブラリ内のすべての型をすばやく見つける方法はありますかInputType
( forSubType1
およびSubType2
)? これまでのところ、適切なメンバーを含むクラスのコード ベース全体を検索してきましたが、テンプレートの入力名は多くの場所で再利用されるため、非常に面倒です。
コーディングの観点からすると、おそらく既に定義されている有効な入力タイプのセットが限られている場合に、このようなテンプレートを使用する意味は何ですか? この関数をジェネリックにするのではなく、明示的な型でオーバーロードしないのはなぜですか?