1 /* PR c++/39242, xplicit instantiation declaration prohibits implicit
2 instantiation of non-inline functions. */
3 /* { dg-do compile } */
4 /* { dg-options "-O" } */
9 static void unref (const Rep * obj_r) { obj_r->unref(); }
11 template<typename _Tp, typename _Bt = _Tp>
14 void _assign( _Tp * new_r );
16 ~RepPtrStore() { _assign( 0 ); }
18 template<typename _Tp,typename _Bt>
19 void RepPtrStore<_Tp,_Bt>::_assign( _Tp * new_r )
24 template<typename _Bt> class PtrBase : public RepPtrBase { };
25 template<typename _Tp, typename _Bt = _Tp>
26 class Ptr : public PtrBase<_Bt> {
27 RepPtrStore<_Tp,_Bt> _ptr;
31 typedef Ptr<YStatement,YCode> YStatementPtr;
32 extern template class RepPtrStore<YStatement,YCode>;
33 class ExecutionEnvironment {
34 YStatementPtr m_statement;
35 ~ExecutionEnvironment() { };