[Bug libstdc++/46910] New: std::shared_ptr requires public destructor for a class with friend deleter

2010-12-12 Thread gccbugzilla at virginmedia dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46910

   Summary: std::shared_ptr requires public destructor for a class
with friend deleter
   Product: gcc
   Version: 4.5.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: gccbugzi...@virginmedia.com


Created attachment 22726
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22726
Code example and compiler output

class TestA
{
public:
  static std::shared_ptr CreateTestA();

private:
  TestA();
  ~TestA();

private:
  class Deleter;
  friend class Deleter;

};

class TestA::Deleter
{
public:
  void operator()( TestA * p)
  {
std::cout << "Deleting TestA\n";
delete p;
  }
};

std::shared_ptr TestA::CreateTestA()
{
  return std::shared_ptr(
new TestA(),
TestA::Deleter()
);
}
will not compile:
error: ‘TestA::~TestA()’ is private

The boost shared_ptr works OK.


[Bug libstdc++/46910] std::shared_ptr requires public destructor for a class with friend deleter

2010-12-12 Thread gccbugzilla at virginmedia dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46910

--- Comment #1 from Sam  2010-12-12 
16:54:01 UTC ---
gcc 4.5.1 and test code built on
Linux 2.6.35-24-generic #42-Ubuntu SMP Thu Dec 2 02:41:37 UTC 2010 x86_64
GNU/Linux