Added code to demonstrate how SmartPtr preserves constness through type-safety.
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@986 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
4b43d68311
commit
c93b2e11d1
1 changed files with 19 additions and 0 deletions
|
@ -101,6 +101,10 @@ typedef Loki::SmartPtr< BaseClass, DestructiveCopy, DisallowConversion,
|
|||
AssertCheck, DefaultSPStorage, DontPropagateConst >
|
||||
NonConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr;
|
||||
|
||||
typedef Loki::SmartPtr< const BaseClass, DestructiveCopy, DisallowConversion,
|
||||
AssertCheck, DefaultSPStorage, DontPropagateConst >
|
||||
ConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr;
|
||||
|
||||
typedef Loki::SmartPtr< BaseClass, NoCopy, DisallowConversion,
|
||||
AssertCheck, DefaultSPStorage, DontPropagateConst >
|
||||
NonConstBase_NoCopy_NoConvert_Assert_DontPropagate_ptr;
|
||||
|
@ -213,6 +217,21 @@ void DoOwnershipConversionTests( void )
|
|||
// NonConstBase_NoCopy_NoConvert_Assert_DontPropagate_ptr p41( p4 );
|
||||
// NonConstBase_NoCopy_NoConvert_Assert_DontPropagate_ptr p42( p5 );
|
||||
|
||||
// These constructions are legal because the preserve const-ness.
|
||||
ConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p43( p5 );
|
||||
ConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p44( p43 );
|
||||
const BaseClass * rawP = new BaseClass;
|
||||
// These constructions are illegal because the don't preserve constness.
|
||||
// NonConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p45( rawP );
|
||||
// NonConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p46( p43 );
|
||||
ConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p47( rawP );
|
||||
|
||||
NonConstBase_KillCopy_NoConvert_Assert_DontPropagate_ptr p48;
|
||||
// This assignment is legal because it preserves constness.
|
||||
p48 = p5;
|
||||
// This assignment is illegal because it won't preserve constness.
|
||||
// p48 = p43;
|
||||
|
||||
// illegal assignements! Can't convert from one ownership policy to another.
|
||||
// p1 = p2;
|
||||
// p1 = p3;
|
||||
|
|
Loading…
Add table
Reference in a new issue