我正在完成我一直在做的一个包。所有检查看起来都很好,并且在我的计算机上编译没有问题。win-builder
包裹也没有问题。作为进一步检查,我尝试在同事的计算机上从源代码安装,但失败了。问题来自于我从中获取的 Rcpp 函数Rcpp 中关于向量幂的 StackOverflow 线程 https://stackoverflow.com/questions/30106492/vectorized-exponent-for-pow-in-rcpp:
NumericVector vecpow(const NumericVector base, const NumericVector exp) {
NumericVector out(base.size());
std::transform(base.begin(), base.end(),
exp.begin(), out.begin(), ::pow);
return out;
}
这对我来说编译和工作得很好,但在安装时给我的同事抛出一个错误,涉及
error: no matching function function for call to 'transform'
and
candidate function template not viable: requires 4 arguments, but 5 were provided.
我可以通过替换来重现该错误::pow
在原始代码中pow
。我使用的是 Windows 8.1,我的同事使用的是 Mac。该同事维护着自己的包,涉及大量Rcpp代码,通常编译没有问题。
我认为这可能是编译器问题。原始线程有一些涉及 C++11 的替代代码(线程已经有五年了),因此原则上,我可以使用替代方案替换有问题的代码。但是,由于我对此缺乏经验,因此这将是反复试验。我的问题是:出现此错误的原因是否简单?如何修改我的代码以确保该软件包可供大多数用户安装和使用?