[R-pkg-devel] How to update "SystemRequirements: C++11"?

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Tue Feb 7 01:44:27 CET 2023


On 06/02/2023 3:46 p.m., Winston Chang wrote:
> I recently submitted a package to CRAN with "SystemRequirements: C++11".
> This raises the following NOTE on R-devel, and I was asked to fix and
> resubmit:
> 
> * checking C++ specification ... NOTE
>    Specified C++11: please update to current default of C++17
> 
> If I understand correctly, I have two options, neither of which will work:
> 1. Remove "SystemRequirements: C++11" entirely. The problem with this is
> that on systems with older versions of R (3.6 and below, I believe), it may
> try to compile the package with an older C++ standard, which will fail.
> 2. Update it to "SystemRequirements: C++17". The problem here is that on
> systems that don't have a C++17 compiler, the package won't build -- even
> though the package only actually requires a C++11 compiler.
> 
> How should I deal with this?

After reading the discussion here and the manuals, I think this is how 
to do it.  I'm assuming your code is compatible with both C++11 and 
C++17, but not some earlier standards.

1.  In SystemRequirements, state that it needs C++11 or higher.  That 
field is supposed to be human readable (though I think there are scripts 
that try to read it; maybe they will suggest a particular wording to use).

2.  Have a configure script (e.g. like the one Ivan posted) that 
specifies CXX_STD=CXX11 in Makevars if the R version is less than 4.0.0, 
and gives no specification otherwise (because from 4.0.0 onwards, if C++ 
is available, it will be C++11 or higher).

I think it wouldn't hurt to look through the available versions and pick 
from them, but I don't think it's supposed to be necessary.

If it eventually turns out that your code is not compatible with some 
later standard, I'm sure CRAN will let you know.

Duncan Murdoch



More information about the R-package-devel mailing list