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.

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@493 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2006-01-18 16:49:32 +00:00
parent 385f6b06d4
commit 794fd6ba56
4 changed files with 49 additions and 8 deletions

View file

@ -106,12 +106,10 @@ namespace Loki
AutoPtrHolder() : ptr(Ptr())
{}
~AutoPtrHolder()
{
// delete automatically by the delete policy
Del<Ptr>::Destroy( ptr );
}
// defined in #include<loki/PimplDef.h>
~AutoPtrHolder();
Ptr Create()
{
ptr = Ptr( new Impl );
@ -334,7 +332,7 @@ namespace Loki
Init;
// ingerit rimpl
// inherit rimpl
typedef PtrImpl
<
Impl<T>,
@ -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
//

36
include/loki/PimplDef.h Executable file
View file

@ -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> class Del
>
AutoPtrHolder<Impl,Ptr,Del>::~AutoPtrHolder()
{
Del<Ptr>::Destroy( ptr );
}
}
}
#endif
// $Log:

View file

@ -226,6 +226,10 @@
RelativePath="..\..\include\loki\Pimpl.h"
>
</File>
<File
RelativePath="..\..\include\loki\PimplDef.h"
>
</File>
<File
RelativePath="..\..\include\loki\SafeFormat.h"
>

View file

@ -24,7 +24,7 @@
#include "type2.h"
#include <loki/SafeFormat.h>
#include <loki/PimplDef.h>
/////////////////////////////////////////