diff --git a/include/loki/Pimpl.h b/include/loki/Pimpl.h index 3766b1f..8fc2de5 100755 --- a/include/loki/Pimpl.h +++ b/include/loki/Pimpl.h @@ -106,12 +106,10 @@ namespace Loki AutoPtrHolder() : ptr(Ptr()) {} - ~AutoPtrHolder() - { - // delete automatically by the delete policy - Del::Destroy( ptr ); - } - + // defined in #include + ~AutoPtrHolder(); + + Ptr Create() { ptr = Ptr( new Impl ); @@ -334,7 +332,7 @@ namespace Loki Init; - // ingerit rimpl + // inherit rimpl typedef PtrImpl < Impl, @@ -352,6 +350,9 @@ namespace Loki #endif // $Log$ +// Revision 1.10 2006/01/18 16:49:06 syntheticpp +// move definition of the destructor to extra file, because msvc tries to use the incomplete type; not inlining does not help; maybe this is a compiler bug. +// // Revision 1.9 2006/01/17 12:03:36 syntheticpp // add comment about auto_ptr // diff --git a/include/loki/PimplDef.h b/include/loki/PimplDef.h new file mode 100755 index 0000000..f691708 --- /dev/null +++ b/include/loki/PimplDef.h @@ -0,0 +1,36 @@ +//////////////////////////////////////////////////////////////////////////////// +// The Loki Library +// Copyright (c) 2006 Peter Kümmel +// Permission to use, copy, modify, distribute and sell this software for any +// purpose is hereby granted without fee, provided that the above copyright +// notice appear in all copies and that both that copyright notice and this +// permission notice appear in supporting documentation. +// The author makes no representations about the +// suitability of this software for any purpose. It is provided "as is" +// without express or implied warranty. +//////////////////////////////////////////////////////////////////////////////// +#ifndef LOKI_PIMPLDEF_H +#define LOKI_PIMPLDEF_H + +namespace Loki +{ + namespace Private + { + template + < + class Impl, + class Ptr, + template class Del + > + AutoPtrHolder::~AutoPtrHolder() + { + Del::Destroy( ptr ); + } + + } +} + +#endif + +// $Log: + diff --git a/test/Pimpl/Pimpl.vcproj b/test/Pimpl/Pimpl.vcproj index 2879ad8..d9e29f9 100755 --- a/test/Pimpl/Pimpl.vcproj +++ b/test/Pimpl/Pimpl.vcproj @@ -226,6 +226,10 @@ RelativePath="..\..\include\loki\Pimpl.h" > + + diff --git a/test/Pimpl/main.cpp b/test/Pimpl/main.cpp index ef41ebb..a0411d0 100755 --- a/test/Pimpl/main.cpp +++ b/test/Pimpl/main.cpp @@ -24,7 +24,7 @@ #include "type2.h" #include - +#include /////////////////////////////////////////