我试图将boost::geometry::get
函数described here传递给另一个函数,但我似乎无法正确。
我有:
template<typename StorageType = double,
std::size_t D = 3>
class Derivative : public DerivativeBase<StorageType, D> {
public:
typedef typename DerivativeBase<StorageType, D>::results_t results_t;
template<typename Iterator, typename Geometry>
results_t operator()(Iterator& objIterator, StorageType (*getter)(Geometry const&))
...
并且编译器抛出:
error: no match for call to ‘(Derivative<double, 3ul>) (iterator&, <unresolved overloaded function type>)’
我试着调用我的函数:
derivs = myDerivs(it, &boost::geometry::get<0>);
我想部分问题是因为我没有将参数传递给get
,编译器无法弄清楚Geometry
在函数签名中应该是什么类型。
我如何通过此功能?
这完全不是boost.geometry
特有的。如果函数重载或需要显式传递所有模板参数,则需要static_cast
函数到它的确切类型。第二种情况就是这里(例如&get<0, GeometryType>
)。