Я пробуя Rcpp/RcppArmadillo в RStudio со следующим кодом:Rcpp Armadillo: RStudio говорит "ехр" неоднозначен
#include <RcppArmadillo.h>
//[[Rcpp::depends(RcppArmadillo)]]
using namespace Rcpp;
using std::exp;
using std::log1p;
// [[Rcpp::export]]
arma::vec log1pexp(arma::vec x) {
for(int ii = 0; ii < x.n_elem; ++ii){
if(x(ii) < 18.0){
x(ii) = log1p(exp(x(ii)));
} else{
x(ii) = x(ii) + exp(-x(ii));
}
}
return x;
}
RStudio говорит призывы к exp
неоднозначны. Я пробовал звонить std::exp
в коде вместо using std::exp
, но не добился успеха. Код компилируется без предупреждений через Rcpp::sourceCpp('filename.cpp')
. Если я введу (float)x(ii)
в код, предупреждение исчезнет, но нет, если Я произнес (double)x(ii)
.
Любое понимание оценено, я довольно неопытен как с C++, так и с RStudio.
Изображение что происходит
Когда вы говорите: * «RStudio говорит» *, вы говорите о сообщениях диагностики кода в среде IDE? Или вы получаете фактическую ошибку компилятора? – nrussell
Во всяком случае, я бы посоветовал использовать неквалифицированный 'exp', поскольку (на основе объявлений в приведенном выше коде) это может относиться к' exp' 'пространству имен' std :: 'или' exp' из 'Rcpp :: 'namespace (и, возможно, C-функция' exp' от ''). –
nrussell
Спасибо @nrussell. Код компилируется без ошибок. Это IDE, которое дает это диагностическое сообщение. – ekvall