我发现在使用和不使用-std = c ++ 0x编译的Rcpp之间存在奇怪的不一致.
考虑表达式
Function data_frame("data.frame");
GenericVector a;
a.push_back("17");
return data_frame(a, _["stringsAsFactors"]=0);
Run Code Online (Sandbox Code Playgroud)
(编辑注意:在Rcpp中强制到DataFrame实际上会向下调用R函数,但是不允许用户设置该标志.)
在"旧"C++(w/o -std = c ++ 0x set)中,此代码有效.在现代C++(w/-std = c ++ 0x set)中,这失败了,说"不能强制类"pairlist"进入data.frame".
显然,这不是世界末日:我只是不使用任何新功能.但是,我承认完全不知道是什么导致了这种差异,以及如何在不抛弃C++ 11的情况下解决它.任何想法,任何人?
新标准的代码目标特征是在Rcpp大约2年前编写的.
但后来我们意识到CRAN不接受-std=c++0xgcc 的标志(或其他编译器的等效标志),并强制执行C++ 99标准,因此我们无法实际使用它.
因此,我们几乎不维护C++11感知代码.这是一种耻辱,因为我们真的很喜欢,但我们更喜欢接受CRAN的曝光.由于我们不维护,可能有很多东西不能正常工作.
这个特殊问题可能很容易解决.一旦我们开始使用绿灯,就会发生这种情况C++11.
我们喜欢 C++11 并且迫不及待地想使用它。但我们不能在上传到 CRAN 时使用它(根据 CRAN 维护者的法令,他们认为 C++11 此时“不可移植”——请向他们而不是我们抱怨,这会让你感到烦恼)。
因此,目前它被“禁止”。RcppCommon.h我们定义了一些检测HAS_CXX0X。但我们还没有真正为此编写代码,因为我们(还)无法按照上一段进行操作。
因此,如果您发现错误,请帮我们一个忙,并在请求发送后续信息的位置报告该错误:列表rcpp-devel。可重复性很好,补丁更好:)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |