// RUN: rm -rf %t // RUN: mkdir %t // RUN: split-file %s %t // RUN: %clang_cc1 -std=c++20 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t %t/main.cpp -o %t/main.o //--- V.h #ifndef V_H #define V_H class A { public: constexpr A() { } constexpr ~A() { } }; template class V { public: V() = default; constexpr V(int n, const A& a = A()) {} }; #endif //--- inst1.h #include "V.h" static void inst1() { V v; } //--- inst2.h #include "V.h" static void inst2() { V v(100); } //--- module.modulemap module "M" { export * module "V.h" { export * header "V.h" } module "inst1.h" { export * header "inst1.h" } } module "inst2.h" { export * header "inst2.h" } //--- main.cpp #include "V.h" #include "inst2.h" static void m() { static V v(100); }