我正在使用指向模板函数的指针,这些函数具有数组引用参数,例如:
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]) + -1))+ 1)]'的表达式中对类型'double (&)[3]'的引用的初始化无效< /p>
如何解决仍然使用数组引用的问题?
注意。-如果我用 typedef 或 std::function< double( double (&)[N] ) > 的结构替换指针参数,问题是一样的。
这是ideone的完整示例