-
-
Notifications
You must be signed in to change notification settings - Fork 218
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C++11 as minimum supported standard #1365
Comments
fwsim maintainer contacted here: https://lists.r-forge.r-project.org/pipermail/rcpp-devel/2025-March/010973.html |
Yes trickier issue. "Eventually" we will make the same subsitution but we probably need to have a 'deprecated' period first where we warn. This is still a user-facing API. |
I'm thrilled to see the new baseline move to Let me know if I can help with anything! Looks like it's split with DE + IU and Kevin reviewing. Major props. |
We're not there yet, but we are moving from wheels that are almost quadratic with their five sides to those with six. Almost a smooth ride now. Kidding aside, many/most client packages have compilerd under C++11 or C++14 or C++17 (and some even C++20) for years. But the baseline is so safely aheard of C++98 that we can simply do the cleanup now. Fairly easily. |
Meta-issue for discussion and to keep track of all the individual changes required to achieve this goal.
It may be helpful to define three classes of tasks and an ordering as DE sees it
Tasks
inst/include/Rcpp/platform/compiler.h
. Ancient tests and defines that are not required anymore."Spring cleaning" of some ancient pre-processor directives #1363
Header cleanup with C++11 as a baseline #1364
HAS_VARIADIC_TEMPLATES
checks and remove carefully, also cleaning upinst/include/Rcpp/generated
stuff. (DE: I expect this to be one single careful PR)Remove use of
HAS_VARIADIC_TEMPLATES
#1366Use variadic templates unconditionally #1367
RCPP_USING_CXX11
checks and remove carefully. RInside uses this macro (see this search). Then, the definition could be removed. (DE: Thanks for the heads-up. I can take this.)Remove RCPP_USING_CXX11 which is now implicit #1369
if __cplusplus < 201103L
and assess removalCleanup __cplusplus checks based on C++11 availability #1370
Cleanup __cplusplus checks #1371
RCPP_USING_UNORDERED_*
checks and remove carefully. ReviewRCPP_UNORDERED_*
types and just replace with the appropriatestd::unordered_*
type.Remove macros for unordered maps/sets #1372
inst/include/Rcpp/sugar/functions/sapply.h:41
(see TODO there). (DE: Unsure about this one, lesser priority for me. To be determined...). (IU: Maybe the other way around: maybe we should just remove the first branch, the one that uses the std library. Then::Rcpp::traits::result_of
could (or could not) be reimplemented based on the std library.)Enable lambdas in all sugar functions #1373
diveRsity(removed from CRAN), which useRCPP_UNORDERED_MAP
andRCPP_UNORDERED_SET
(see this search) in order to replace those uses too. We can deprecate these definitions and remove them in a future release.inst/include/Rcpp/generated
stuff.inst/include/Rcpp/module
.inst/include/Rcpp/sugar/block
.inst/include/Rcpp/sugar/functions/mapply
.R/RcppLdpath.R
. Functions that have been deprecated for ages. Some internal functions could just be dropped (also theinst/discovery
script). The exported ones require some revdep checking. (DE: Sure but low priority as it has not bitten anyone. We could also chase packages still doing 'Depends: Rcpp' but ... to what payoff?)R/Attributes.R
. Particularly,cpp98
,cpp0x
, probablycpp11
too. (DE: Unsure. There will be old code snippets hanging around that have this. Just as with old LdFlags() calls we could just make them null-ops)@eddelbuettel Feel free to add/drop/edit/reorder above.
The text was updated successfully, but these errors were encountered: