[PATCH] D109496: [clang] deprecate frelaxed-template-template-args, make it on by default
Yaxun Liu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 1 20:08:28 PDT 2021
yaxunl added a comment.
This caused regression in Thrust:
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/detail/type_traits/pointer_traits.h:178:20: error: ambiguous partial specializations of 'pointer_element<thrust::pointer<void, thrust::detail::seq_t>>'
typedef typename pointer_element<Ptr>::type element_type;
^
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/detail/raw_pointer_cast.h:27:26: note: in instantiation of template class 'thrust::detail::pointer_traits<thrust::pointer<void, thrust::detail::seq_t>>' requested here
typename thrust::detail::pointer_traits<Pointer>::raw_pointer
^
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/system/hip/detail/malloc_and_free.h:79:18: note: while substituting deduced template arguments into function template 'raw_pointer_cast' [with Pointer = thrust::pointer<void, thrust::detail::seq_t>]
result = thrust::raw_pointer_cast(thrust::malloc(thrust::seq, n));
^
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/detail/type_traits/pointer_traits.h:40:10: note: partial specialization matches [with Ptr = thrust::pointer, Arg1 = void, Arg2 = thrust::detail::seq_t]
struct pointer_element<Ptr<Arg1,Arg2> >
^
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/detail/type_traits/pointer_traits.h:46:10: note: partial specialization matches [with Ptr = thrust::pointer, Arg1 = void, Arg2 = thrust::detail::seq_t, Arg3 = thrust::use_default]
struct pointer_element<Ptr<Arg1,Arg2,Arg3> >
^
/long_pathname_so_that_rpms_can_package_the_debug_info/data/driver/rocThrust/thrust/../thrust/detail/type_traits/pointer_traits.h:52:10: note: partial specialization matches [with Ptr = thrust::pointer, Arg1 = void, Arg2 = thrust::detail::seq_t, Arg3 = thrust::use_default, Arg4 = thrust::use_default]
struct pointer_element<Ptr<Arg1,Arg2,Arg3,Arg4> >
This seems to match the removed documentation about "The change to the standard lacks a corresponding change for template partial ordering, resulting in ambiguity errors for reasonable and previously-valid code. This issue is expected to be rectified soon." However, since it was removed, does that mean there will be no changes for template partial ordering?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109496/new/
https://reviews.llvm.org/D109496
More information about the cfe-commits
mailing list