[PATCH] D119544: Deferred Concept Instantiation Implementation

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon May 2 13:42:27 PDT 2022


erichkeane added a comment.

I was able to find a reproduction of the problem:

    template<typename T, typename U>
      struct is_same { static constexpr bool value = false; };
    template<typename T>
      struct is_same<T,T> { static constexpr bool value = false; };
  
  template<typename T, typename U>
    concept same_as = is_same<T, U>::value;
  
  template <class _Tp>
  struct __range_adaptor_closure {
  
  
      template </*ranges::viewable_range */typename _View, typename _Closure>
          requires same_as<_Tp, _Closure>
      friend constexpr decltype(auto) operator|(_View&& __view, _Closure&& __closure){};
  
  };
  
  
  struct A : __range_adaptor_closure<A>{};
  struct B : __range_adaptor_closure<B>{};

As far as I can tell, there is nothing wrong with the libc++ code, so I have to figure out why after this patch that the requires clause doesn't realize these are different.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D119544/new/

https://reviews.llvm.org/D119544



More information about the cfe-commits mailing list