我正在使用指向模板函数的指针,这些函数有数组引用 参数,例如:
template< size_t N >
double MyFunction( double (&x)[N] );
我将使用前一个函数类型,就像另一个函数中的参数一样
template< size_t N >
bouble BigFunction( double (* PtrFunc)( double (&)[N] ), ... ) {
double x[3];
...
// fill x
// call PtrFunc
double y = (* PtrFunc)( x ); // error: ...
...
}
在主程序中我调用double z = BigFunction( &MyFunction, ... )
但是当我尝试使用GCC 4.7.2进行编译时,对于具有N = 3的数组的特定情况,我得到以下错误(该情况不重要只解释了[ 3]中的错误)
错误:从'double [(((sizetype)(((ssizetype)dim [1])的表达式表达式'double(&amp;)[3]'类型的引用无效初始化+ -1))+ 1)]'
如何使用数组引用解决问题?
注意.- 如果我用一个带有typedef或std :: function&lt;的结构替换指针参数double(double(&amp;)[N])&gt;问题是一样的。
这是ideone
的完整示例答案 0 :(得分:0)