From 8e96c6e81b9b415edb4e2dcfb977608938ce85ff Mon Sep 17 00:00:00 2001 From: Dirk Eddelbuettel Date: Thu, 20 Jan 2022 07:29:40 -0600 Subject: [PATCH] three small changes to compile (again) under C++98 --- ChangeLog | 5 +++++ src/attributes.cpp | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 73a632435..5eaf4ed6f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2022-01-20 Dirk Eddelbuettel + + * src/attributes.cpp: Make three small changes to permit compilation + under C++98 now (while we consider just turning to C++11 overall) + 2022-01-14 Dirk Eddelbuettel * inst/tinytest/test_packageversion.R: Comparison to 'dev' revision diff --git a/src/attributes.cpp b/src/attributes.cpp index bcb525ec8..490aee388 100644 --- a/src/attributes.cpp +++ b/src/attributes.cpp @@ -2,7 +2,7 @@ // attributes.cpp: Rcpp R/C++ interface class library -- Rcpp attributes // // Copyright (C) 2012 - 2020 JJ Allaire, Dirk Eddelbuettel and Romain Francois -// Copyright (C) 2021 JJ Allaire, Dirk Eddelbuettel, Romain Francois, Iñaki Ucar and Travers Ching +// Copyright (C) 2021 - 2022 JJ Allaire, Dirk Eddelbuettel, Romain Francois, Iñaki Ucar and Travers Ching // // This file is part of Rcpp. // @@ -400,12 +400,20 @@ namespace attributes { Param sigParam = paramNamed(kExportSignature); std::string sig = sigParam.value(); trimWhitespace(&sig); - if(sig.empty()) return sig; - if(sig.back() == '}') + if (sig.empty()) return sig; +#if __cplusplus < 201103L + if (sig[sig.size() - 1] == '}') +#else + if (sig.back() == '}') +#endif sig = sig.substr(0, sig.size()-1); // check sig.empty again since we deleted an element - if(sig.empty()) return sig; - if(sig.front() == '{') + if (sig.empty()) return sig; +#if __cplusplus < 201103L + if (sig[0] == '{') +#else + if (sig.front() == '{') +#endif sig.erase(0,1); return sig; } @@ -2810,7 +2818,7 @@ namespace attributes { // as the error message is generally more descriptive CharacterVector pargs_cv = formalArgs(eval(parse(_["text"] = args))); std::vector parsed_args = - Rcpp::as>(pargs_cv); + Rcpp::as >(pargs_cv); for(size_t i=0; i