66 lines · cpp
1// RUN: rm -rf %t2// RUN: mkdir %t3// RUN: split-file %s %t4 5// RUN: %clang_cc1 -std=c++20 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t %t/main.cpp -o %t/main.o6 7//--- V.h8#ifndef V_H9#define V_H10 11class A {12public:13 constexpr A() { }14 constexpr ~A() { }15};16 17template <typename T>18class V {19public:20 V() = default;21 22 constexpr V(int n, const A& a = A()) {}23};24 25#endif26 27//--- inst1.h28#include "V.h"29 30static void inst1() {31 V<int> v;32}33 34//--- inst2.h35#include "V.h"36 37static void inst2() {38 V<int> v(100);39}40 41//--- module.modulemap42module "M" {43 export *44 module "V.h" {45 export *46 header "V.h"47 }48 module "inst1.h" {49 export *50 header "inst1.h"51 }52}53 54module "inst2.h" {55 export *56 header "inst2.h"57}58 59//--- main.cpp60#include "V.h"61#include "inst2.h"62 63static void m() {64 static V<int> v(100);65}66