私のテンプレートクラスは次のようになります:
template<unsigned WIDTH, unsigned HEIGTH, typename T = int> class matrix { ... }
非常に単純明快で、テンプレート引数は行列のこのサイズを決定します。サイズは論理的に一定なので、一定になるように実装しました。しかし、 my を受け入れる関数を作成しようとするとmatrix
、次の問題が発生します。
std::ostream& operator<<(std::ostream &os, const matrix &m){ ...}
そのように書かれていると、コンパイラはテンプレート引数の欠如を正当に反対します...しかし
std::ostream& operator<<(std::ostream &os, const matrix<unsigned, unsigned> &m){ ...}
このエラーをトリガーします:error: expected a constant of type 'unsigned int', got 'unsigned> int'
matrix
型ではなく定数を期待するので、これも一種の真実です。
これに対処する方法は?私はこの問題に遭遇した最初の人ではないと確信しています.定数パラメータ化されたテンプレートを渡すというこの問題に取り組む最も「標準的な」方法は何ですか?