ulp_distance.cc:53 uses a dependent type name without typename, which clang-15 rejects:
https://github.com/apache/arrow/blob/d0919579cb/cpp/src/arrow/util/ulp_distance.cc#L53
/arrow/r/check/arrow.Rcheck/00_pkg_src/arrow/tools/cpp/src/arrow/util/ulp_distance.cc:53:20: error: missing 'typename' prior to dependent type name 'FloatToUInt<Float>::Type'
using UIntType = FloatToUInt<Float>::Type;
^~~~~~~~~~~~~~~~~~~~~~~~
typename
1 error generated.
From test-r-linux-as-cran nightly run: https://github.com/ursacomputing/crossbow/actions/runs/28413609521
Introduced in PR #49290 (merged Jun 17). Breaking test-r-linux-as-cran nightly since at least June 23.
Note: this only fails on the rhub/ubuntu-clang container which uses clang-15. CRAN's debian-clang now uses clang 22.1.7, so this isn't a real CRAN failure. However, adding the typename keyword is correct C++ practice regardless.
Fix: using UIntType = typename FloatToUInt<Float>::Type;
ulp_distance.cc:53uses a dependent type name withouttypename, which clang-15 rejects:https://github.com/apache/arrow/blob/d0919579cb/cpp/src/arrow/util/ulp_distance.cc#L53
From
test-r-linux-as-crannightly run: https://github.com/ursacomputing/crossbow/actions/runs/28413609521Introduced in PR #49290 (merged Jun 17). Breaking
test-r-linux-as-crannightly since at least June 23.Note: this only fails on the
rhub/ubuntu-clangcontainer which uses clang-15. CRAN's debian-clang now uses clang 22.1.7, so this isn't a real CRAN failure. However, adding thetypenamekeyword is correct C++ practice regardless.Fix:
using UIntType = typename FloatToUInt<Float>::Type;