1 // PR c++/57325 2 3 class valarray { int _M_data; }; 4 template < typename > struct SimpleJet { valarray partials; }; 5 6 template < class C > struct scoped_ptr_impl 7 { scoped_ptr_implscoped_ptr_impl8 scoped_ptr_impl (C *):data_ () { } 9 struct Data 10 { 11 C ptr; 12 }; 13 Data data_; 14 }; 15 16 template < class, class = int >struct scoped_ptr; 17 template < class C, class D > struct scoped_ptr <C[], D > 18 { 19 scoped_ptr ():impl_ (0) { } 20 scoped_ptr_impl < C > impl_; 21 }; 22 23 template < typename JetsT > void 24 TestJets (JetsT *) 25 { 26 typedef typename JetsT::JetType JetT; 27 scoped_ptr < JetT[] > a; 28 } 29 30 template < typename T > struct SimpleJets 31 { 32 typedef SimpleJet < T > JetType; 33 scoped_ptr < SimpleJet < T >[] > vars_; 34 }; 35 36 void fn () 37 { 38 SimpleJets < double >b; 39 TestJets (&b); 40 } 41