|  | // From https://github.com/llvm/llvm-project/issues/77953 | 
|  | // RUN: rm -rf %t | 
|  | // RUN: mkdir -p %t | 
|  | // RUN: split-file %s %t | 
|  |  | 
|  | // RUN: %clang_cc1 -std=c++20 -emit-module-interface %t/a.cppm -o %t/a.pcm | 
|  | // RUN: %clang_cc1 -std=c++20 -fmodule-file=a=%t/a.pcm %t/b.cpp -fsyntax-only -verify | 
|  |  | 
|  | //--- a.cppm | 
|  | export module a; | 
|  |  | 
|  | template<typename, typename> | 
|  | concept c = true; | 
|  |  | 
|  | export template<typename... Ts> | 
|  | struct a { | 
|  | template<typename... Us> requires(... and c<Ts, Us>) | 
|  | friend bool operator==(a, a<Us...>) { | 
|  | return true; | 
|  | } | 
|  | }; | 
|  |  | 
|  | template struct a<>; | 
|  |  | 
|  | //--- b.cpp | 
|  | // expected-no-diagnostics | 
|  | import a; | 
|  | template struct a<int>; |