std0x 和非 std0x 之间的 rcpp 不一致
Rcpp inconsistency between std0x and non-std0x
我发现Rcpp之间有一个奇怪的不一致,它使用和不使用-std=c++0x进行编译。
考虑表达式
Function data_frame("data.frame");
GenericVector a;
a.push_back("17");
return data_frame(a, _["stringsAsFactors"]=0);
(编者注:在 Rcpp 中强制使用 DataFrame 实际上会归结为 R 函数,但不允许用户设置该标志。
在"旧"C++(w/o -std=c++0x set)中,此代码有效。 在现代C++(w/-std=c++0x set)中,这失败了,说"不能将类'pairlist'强制到data.frame中"。
显然,这不是世界末日:我只是不使用任何更新的功能。 但是,我承认完全不知道是什么导致了这种差异,以及如何在不扔掉C++11的情况下解决它。 有什么想法吗?
针对新标准功能的代码大约在 2 年前于 Rcpp
年编写。
但后来我们意识到CRAN
不接受 gcc 的 -std=c++0x
标志(或其他编译器的等效标志),并强制使用 C++99 标准,因此我们无法实际使用它。
因此,我们几乎不维护C++11
感知代码。这是一种耻辱,因为我们真的很想这样做,但我们更喜欢被 CRAN 接受的曝光。由于我们不维护,因此可能有很多事情无法正常工作。
这个特定问题可能很容易解决。一旦我们获得使用C++11
的绿灯,就会发生这种情况。
我们喜欢C++11,迫不及待地想使用它。 但是我们不能在上传到CRAN时使用它(根据CRAN维护者的法令,他们认为C++11在这一点上是"不可移植的" - 请向他们投诉,而不是我们,这让你感到恼火)。
因此,它目前被"禁止"。RcppCommon.h
中有一点检测,我们定义HAS_CXX0X
.但是我们还没有真正为此编写代码,因为我们不能(还)按照上一段。
因此,如果您发现错误,请帮我们一个忙,并在请求发送后续内容的地方报告:rcpp-devel
列表。 可重现性好,贴片更好:)
- 大于65535的C++数组[size]引发不一致的溢出
- 在 C++(和 C)中进行类型转换时明显不一致
- 填充上编译器生成的复制构造函数之间的不一致
- 犰狳的 print() 方法和 cout 在从 Rcpp 调用时顺序不一致
- CreateDIBSection为同一图像返回不一致的位图位值
- 在 Qml 中从 QSqlTableModel 中删除单行时视图不一致
- 模板参数推导不一致
- 声明中不一致的no是否违反ODR?
- 如何删除分支因子不一致的树,最大为 30,40
- 从 C++ 函数与 Python 函数返回的不一致值用于偏斜正态分布
- 从 C 字符串构造 std::string 与从另一个 std::string 构造 std::string 不一致
- 这种比较是否不一致(或者存在其他问题)?
- 以下可变参数模板行为是否不一致?
- 如何修复我的链表读数不一致的问题?
- 在C++17中,为什么类模板和函数模板的指针类型推导明显不一致
- void 函数中的指针参数返回不一致的值
- 如何查找导致结果不一致的代码
- 跨平台 mySQL 与字符集不一致
- C++:不一致的 std::p ow( 类型 ) 定义
- std0x 和非 std0x 之间的 rcpp 不一致