1 // { dg-module-do run }
2 // { dg-additional-options "-fmodules-ts" }
3 
4 export module tom.riddle;
5 // { dg-module-cmi tom.riddle }
6 
One(int a)7 export inline auto One (int a)
8 {
9   struct X {
10     int x;
11     // p1779 makes these things not-inline, which is a surprise.
12     // Asking CWG
13     inline X(int a) :x(a){}
14     inline operator int () const {return x;}
15   };
16 
17   return X(a);
18 }
19 
20 // Look Ma! this isn't inline!
Two(int a)21 export auto Two (int a)
22 {
23   struct Y {
24     int x;
25     // In this case we do manage to emit these fns (if not marked as
26     // inline), but we give them internal linkage, so they are not
27     // nameable from elsewhere.  Workaround for now.
28     inline Y(int a) :x(a){}
29     inline operator int () const {return x;}
30   };
31 
32   return Y(a);
33 }
34 
35