Boost logo

Boost Users :

From: Andrew R. Thomas-Cramer (artc_at_[hidden])
Date: 2002-05-13 14:40:46


----- Original Message -----
From: "Peter Dimov" <pdimov_at_[hidden]>
To: <Boost-Users_at_[hidden]>
Sent: Monday, May 13, 2002 1:41 PM
Subject: Re: [Boost-Users] boost::shared_ptr<const T>

> From: "Andrew R. Thomas-Cramer" <artc_at_[hidden]>
> >
> > Is it legal to construct a boost::shared_ptr<const T> from a raw T*?
>
> Yes, it's legal.

Neat!

> > On MSVC6, it produces errors when class T has an implicit destructor, but
> compiles without error otherwise.
>
> Seems to work for me; coud you post an example?

I'm using boost 1.27 and MSVC6.0. Here's example code, followed by the compiler
error:

#include <boost/shared_ptr.hpp>

class With {
public:
  With() { }
  ~With() { }
};

class Without {
public:
  Without() { }
};

int
main() {
  boost::shared_ptr<const With> pWith( new With() );
  boost::shared_ptr<const Without> pWithout( new Without() );

  return 0;
}

Compiling...
main.cpp
d:\projects\lib\boost\boost_1_27_0\boost\checked_delete.hpp(27) : error C2665:
'delete' : none of the 2 overloads can convert parameter 1 from type 'const
class Without *'
        d:\projects\lib\boost\boost_1_27_0\boost\checked_delete.hpp(43) : see
reference to function template instantiation 'void __cdecl
boost::checked_delete(const class Without *)' being compiled
Error executing cl.exe.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net