BertalanD added a comment.

Hi @erichkeane,

This change broke compilation of this program (https://godbolt.org/z/KrWGvcf8h; 
reduced from https://github.com/SerenityOS/ladybird):

  template<typename T, typename U>
  constexpr bool IsSame = false;
  
  template<typename T>
  constexpr bool IsSame<T, T> = true;
  
  template<typename T>
  struct Foo {
      template<typename U>
      Foo(U&&) requires (!IsSame<U, Foo>);
  };
  
  template<>
  struct Foo<void> : Foo<int> {
      using Foo<int>::Foo;
  };
  
  Foo<void> test() { return 0; }



  <source>:18:27: error: invalid reference to function 'Foo': constraints not 
satisfied
  Foo<void> test() { return 0; }
                            ^
  <source>:10:24: note: because substituted constraint expression is 
ill-formed: value of type '<dependent type>' is not contextually convertible to 
'bool'
      Foo(U&&) requires (!IsSame<U, Foo>);
                         ^


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126907

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to