在 C++ 库 CGAL 中有以下几行:
void exit( Locate_type& lt, int& li, int& lj ) const
{
lt = prev_lt(); li = prev_li(); lj = prev_lj();
}
std::tuple<Locate_type, int, int> exit() const
{
return { prev_lt(), prev_li(), prev_lj() };
}
为了将CGAL移植到R,RcppCGAL的作者做了如下修改:
std::tuple<Locate_type, int, int> Rcpp::stop("Exit error") const
{
return { prev_lt(), prev_li(), prev_lj() };
}
以前,这有效。但现在,CRAN 已经升级了gcc,这不再起作用了。出现此错误:
At global scope:
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:49:
error: expected identifier before string constant
371 | std::tuple<Locate_type, int, int>Rcpp::stop("Exit Error") const
| ^~~~~~~~~~~~
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:49:
error: expected ',' or '...' before string constant
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:38:
error: invalid use of '::'
371 | std::tuple<Locate_type, int, int>Rcpp::stop("Exit Error") const
| ^~~~
我们应该做什么?