我发现使用和不使用 -std=c++0x 编译的 Rcpp 之间存在奇怪的不一致。
考虑表达式
Function data_frame("data.frame");
GenericVector a;
a.push_back("17");
return data_frame(a, _["stringsAsFactors"]=0);
(编者注:在 Rcpp 中对 DataFrame 的强制转换实际上归结为 R 函数,但不允许用户设置该标志。)
在“旧”C++(没有 -std=c++0x 集)中,此代码有效。在现代 C++(w/ -std=c++0x 设置)中,这失败了,说“无法将类“pairlist”强制转换为 data.frame”。
显然,这不是世界末日:我只是不使用任何更新的功能。然而,我承认完全不知道是什么导致了这种差异,以及如何在不丢弃 C++11 的情况下解决它。任何想法,任何人?