<div dir="ltr">Hello Romain,<div><br></div><div style>I tested Rcpp11 under Mac OS (10.8.5) using Apple's</div><div style>clang-500.2.75 (Xcode 5), and also under Linux. Here are</div><div style>some results:</div><div style>
<br></div><div style>1. The recommended install method</div><div style> devtools::install_github("romainfrancois/Rcpp11")</div><div style> did not work. The problem seems to be that it looks at</div><div style>
hadley's github repo instead of yours? The work-around is</div><div style> simply to download the zip file.</div><div style><br></div><div style>2. Under Mac OS inclusion of internal.h causes compilation to fail</div>
<div style> because CALLFUN_1 defines a function with no 'extern "C"'</div><div style> linkage specification, while RCPP_FUN_1 defines the same</div><div style> function with this linkage specification. </div>
<div style><br></div><div style> The error results from</div><div style> improved compliance with the standards: C++98 and C++11</div><div style> standards (Section 7.5.1) state that two function types with</div>
<div style> with different linkage are different types, yet one cannot</div><div style> overload the other because you cannot overload on the</div><div style> "return type" (which arguably includes the linkage).</div>
<div style><br></div><div style> The work-around is to insert extern "C" in the CALLFUN_xx</div><div style> macros in internal.h. This is also needed in the declaration of</div><div style> init_Rcpp11_routines() in internal.h.</div>
<div style><br></div><div style>3. The default file system type under Mac OS uses case-insensitive</div><div style> file names (like Windows), whereas Linux file systems use </div><div style> case-sensitive file names. This can cause builds that work</div>
<div style> under Mac OS to fail under Linux, and this happens with </div><div style> Rcpp11: for example, Rcpp/Vector.h includes Rcpp/Na_Proxy.h,</div><div style> yet the file that exists on disk is Rcpp/NA_Proxy.h.</div>
<div style><br></div><div style> Thus periodic testing on systems with file name case-sensitivity</div><div style> can prevent big porting and refactoring headaches.</div><div style><br></div><div style>Cheers,</div>
<div style>Dominick</div></div>