1 // { dg-additional-options -fmodules-ts } 2 3 import inter; 4 5 namespace details 6 { 7 8 struct X 9 { 10 11 int m; XX12 X (int m) : m(m) 13 { 14 } 15 16 operator int () const 17 { 18 return m; 19 } 20 }; 21 22 } 23 24 namespace hidden 25 { 26 27 struct Y 28 { 29 30 int m; YY31 Y (int m) : m(m) 32 { 33 } 34 35 operator int () const 36 { 37 return m; 38 } 39 }; 40 41 } 42 main()43int main () 44 { 45 details::X x(2); 46 hidden::Y y(2); 47 48 // details::fn@worker is visible from TPL@inter 49 if (TPL (x) != 2) // instantiate TPL<details::X>(T&) 50 return 1; 51 52 // hidden::fn@inter is visible from TPL@inter 53 if (TPL (y) != -2) // instantiate TPL<hidden::Y>(T&) 54 return 2; 55 56 return 0; 57 } 58