-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 を捨てずに回避する方法について、私は完全に途方に暮れていることを告白します。アイデアはありますか?