2

タイプパラメータを使用してテンプレートを定義する場合

template <class T>
void f(const T& arg){...};

その場合、パラメーターTは、明示的に指定されていなくても、コンパイラーによって推測できます。次のテンプレートで同じ効果を達成する方法はありますか?

template <int n>
void g(){...};

I mean, are there rules for template argument deduction when the argument is a value (int, bool, etc) and not a type?

4

1 に答える 1

2

つまり、引数が型ではなく値(int、boolなど)である場合のテンプレート引数の推定に関する規則はありますか?

はい、タイプとまったく同じです。ただし、すべてのテンプレート引数の推定は、パラメーターの既知の静的型(つまり、実行時整数変数ではない)に依存することに注意してください(戻り型が重要な変換演算子の場合を除く)。

だからあなたはこれを行うことができます:

template <int n>
void g(int (&array)[n]){...};

n配列のサイズから推測します。

于 2012-04-05T13:48:10.513 に答える