テンプレート関数の結果を入力として受け取る関数をいくつか書いています。
int alg1(Vect3) {...}
...
int algN(Vect3) {...}
void main() {
alg1( mat.topRightCorner<3,1>() )
}
ここで、興味がある場合は、 EigenのメソッドでtopRightCorner
ある の部分行列を返します。ここで、次元は、コンパイル時に既知の場合にテンプレート パラメーターとして配置されます。mat
ただし、このように、マクロを使用して異なるアルゴリズムをすばやく切り替える「ショートカット」を作成します (実際のコードでは関数が何度も呼び出されるため)。
#define ALG(X) ( algN(X) )
ALG( mat.topRightCorner<3,1>() )
マクロは正しく展開されていますが、2 つの異なるパラメーターのように何らかの形で誤解されているため、エラーが発生しmat.topRightCorner<3
ます1>()
。
入力を角かっこで囲むとうまくいきますが、なぜこの動作になるのでしょうか?