You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The vendored catch.h header in the testthat package references std::uncaught_exception, which has been deprecated in C++17 and removed in C++20. When compiling with clang++-20 and the -std=gnu++20 flag, this leads to a compilation error:
clang++-20 -stdlib=libc++ -std=gnu++20 -I"/opt/R/devel/lib/R/include" -DNDEBUG -I'/github/home/R/x86_64-pc-linux-gnu-library/4.5/Rcpp/include' -I'/github/home/R/x86_64-pc-linux-gnu-library/4.5/RcppThread/include' -I'/github/home/R/x86_64-pc-linux-gnu-library/4.5/progress/include' -I'/github/home/R/x86_64-pc-linux-gnu-library/4.5/spacefillr/include' -I'/github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include' -I/usr/local/include -D RAY_REPRODUCE_PERLIN -DSTRICT_R_HEADERS -DRAY_HAS_X11 -DHAS_SSE -DHAS_SSE2 -DRAYSIMD -DRAYSIMDVECOFF -fpic -O3 -Wall -pedantic -frtti -Wp,-D_FORTIFY_SOURCE=3 -Wall -pedantic -c test-runner.cpp -o test-runner.o
In file included from test-runner.cpp:7:
In file included from /github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat.h:1:
In file included from /github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat/testthat.h:72:
/github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat/vendor/catch.h:8382:20: error: no member named 'uncaught_exception' in namespace 'std'; did you mean 'uncaught_exceptions'?
8382 | if ( !std::uncaught_exception() ){
| ~~~~~^
/usr/lib/llvm-20/bin/../include/c++/v1/__exception/operations.h:35:31: note: 'uncaught_exceptions' declared here
35 | _LIBCPP_EXPORTED_FROM_ABI int uncaught_exceptions() _NOEXCEPT;
| ^
In file included from test-runner.cpp:7:
In file included from /github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat.h:1:
In file included from /github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat/testthat.h:72:
/github/home/R/x86_64-pc-linux-gnu-library/4.5/testthat/include/testthat/vendor/catch.h:8705:22: error: no member named 'uncaught_exception' in namespace 'std'; did you mean 'uncaught_exceptions'?
8705 | if( std::uncaught_exception() )
| ~~~~~^
/usr/lib/llvm-20/bin/../include/c++/v1/__exception/operations.h:35:31: note: 'uncaught_exceptions' declared here
35 | _LIBCPP_EXPORTED_FROM_ABI int uncaught_exceptions() _NOEXCEPT;
| ^
2 errors generated.
make: *** [/opt/R/devel/lib/R/etc/Makeconf:204: test-runner.o] Error 1
ERROR: compilation failed for package ‘rayrender’
* removing ‘/tmp/Rtmp5ZqS0O/pkg-lib2ec7db28e4f/rayrender’
This issue arises in two locations in catch.h:
Line 8382: if ( !std::uncaught_exception() ){
Line 8705: if( std::uncaught_exception() )
This error was detected by compiling the rayrender package with the rhub clang20 runner.
Description
The vendored catch.h header in the testthat package references
std::uncaught_exception
, which has been deprecated in C++17 and removed in C++20. When compiling with clang++-20 and the -std=gnu++20 flag, this leads to a compilation error:This issue arises in two locations in catch.h:
if ( !std::uncaught_exception() ){
if( std::uncaught_exception() )
This error was detected by compiling the rayrender package with the rhub clang20 runner.
https://github.com/tylermorganwall/rayrender/actions/runs/12653086666/job/35257420480
Suggested Fix
Replace the calls to
std::uncaught_exception()
withstd::uncaught_exceptions() > 0
, which is the recommended replacement in C++17 and later.Here’s the updated code:
and
The text was updated successfully, but these errors were encountered: