[PATCH] D126907: Deferred Concept Instantiation Implementation Take 2

Erich Keane via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 10 05:57:43 PDT 2022


erichkeane added a comment.

In D126907#3844788 <https://reviews.llvm.org/D126907#3844788>, @BertalanD wrote:

> 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>);
>                          ^

Thanks for the report!  I'll look into it ASAP.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126907



More information about the cfe-commits mailing list