[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