Consider masking definition of Rf_error()?
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Domínio
- developer-experience
Direção de pesquisa
Start with the Rf_error() definition used in C++ contexts and the Rcpp::stop() alternative described in the issue. Review the 35-comment thread to determine whether masking is technically viable and what behavior should replace direct Rf_error() use; done means reaching a decided approach that addresses destructor safety.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Somewhat related to a recent post on R-devel, some users will still try to use Rf_error() in C++ code using Rcpp. However, (as is documented) C++ destructors won't run when a longjmp occurs in cases like this. For example:
#include <Rcpp.h>
using namespace Rcpp;
struct A {
A() { Rprintf("A()\n"); }
~A() { Rprintf("~A()\n"); }
};
// [[Rcpp::export]]
SEXP uhoh() {
A a;
Rf_error("Oops!");
}
/*** R
uhoh()
*/
In this example, ~A() is never printed.
We could consider masking the definition of Rf_error() in these contexts. For example, something like:
#define Rf_error(...) \
static_assert(false, "Use of Rf_error() in C++ contexts is unwise: consider using Rcpp::stop() instead.");
There might also be a way to provide our own definition of Rf_error() that "masks" the version provided by R, but I wasn't able to find something immediately obvious.
- Linguagem predominante
- C++
- Estrelas
- 799
- Forks
- 219
- Merge médio
- 5h 13min
- PRs com merge (30d)
- 6
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de RcppCore/Rcpp
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
Todas as issues de RcppCore/Rcpp
Issues semelhantes
-
[BUG] Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
eunomia-bpf/llvmbpf#51 · 1 comentário ·
-
status:needs-triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
PX4/PX4-Autopilot#28776 ·
-
Website Doc Typo Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 92/100
autowarefoundation/autoware_universe#13413 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100