Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6017497
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 23, 20262026-05-23T03:08:12+00:00 2026-05-23T03:08:12+00:00

Type erasure – is that how you call it? How boost::shared_ptr stores its deleter

  • 0

Type erasure – is that how you call it?

How boost::shared_ptr stores its deleter and how boost::function stores its function object?

Is there any tutorial that teaches the trick?

What is the run-time cost of using type-erased function objects?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-23T03:08:13+00:00Added an answer on May 23, 2026 at 3:08 am

    The idea is simple, you define a base class that has an interface with the functionality you need, and then inherit from it. Since the type erased class uses only that interface, the actual type underneath is forgotten and erased. Alternatively, if the only needed interface can be expressed as free functions you can store pointers to the free functions.

    namespace detail {
       struct deleter_base {
          virtual ~deleter_base() {}
          virtual void operator()( void* ) = 0;
       };
       template <typename T>
       struct deleter : deleter_base {
          virtual void operator()( void* p ) {
             delete static_cast<T*>(p);
          }
       };
    }
    template <typename T>
    class simple_ptr {
       T* ptr;
       detail::deleter_base* deleter;
    public:
       template <typename U>
       simple_ptr( U* p ) {
          ptr = p;
          deleter = new detail::deleter<U>();
       }
       ~simple_ptr() {
          (*deleter)( ptr );
          delete deleter;
       }
    };
    

    This is a really simplified smart pointer, but the idea is there. In the particular case of shared_ptr, the deleter is stored as part of the reference count object, that is held by pointer.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a heterogeneous List that can contain any arbitrary type of object. I
I know that type erasure makes them look equal, type-wise, at runtime, so that:
Is there a way to get Class object from the type variable in Java
I'm considering a type erasure setup that uses typeid to resolve the type like
Java generics are implemented using type erasure. That means that if I have a
Most of the documentation regarding type erasure handling in Java assumes that the use
Is there a way one could avoid type erasure and get access to a
My obviously wrong understanding of Java Generics was up to now, that Type Erasure
This question has to do with type erasure and its implication on arrays SCJP
Type.GetType(System.String) Is there a lookup for the aliases available somewhere? Type.GetType(string) returns null .

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.