diff --git a/clang/test/Modules/template-pack.cppm b/clang/test/Modules/template-pack.cppm new file mode 100644 index 0000000000000..eca17f31f015e --- /dev/null +++ b/clang/test/Modules/template-pack.cppm @@ -0,0 +1,51 @@ +// 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 %t/b.cppm -fprebuilt-module-path=%t -fsyntax-only -verify + +//--- foo.h + +namespace std +{ + template + void operator &&(_Dom1 __v, _Dom1 __w) + { + return; + } +} + +//--- bar.h +namespace std +{ + template + struct _Traits + { + static constexpr bool _S_copy_ctor = + (__is_trivial(_Types) && ...); + }; + + template + struct variant + { + void + swap(variant& __rhs) + noexcept((__is_trivial(_Types) && ...)) + { + } + }; +} + +//--- a.cppm +module; +#include "foo.h" +#include "bar.h" +export module a; + +//--- b.cppm +// expected-no-diagnostics +module; +#include "bar.h" +export module b; +import a;