There is another, very different, type of application where the local buffer optimization can be used very effectively—storing callable objects, which are objects that can be invoked as functions. Many template classes provide an option to customize some part of their behavior using a callable object. For example, std::shared_ptr, the standard shared pointer in C++, allows the user to specify a custom deleter. This deleter will be called with the address of the object to be deleted, so it is a callable with one argument of the void* type. It could be a function pointer, a member function pointer, or a functor object (an object with an operator() defined)—any type that can be called on a p pointer; that is, ...
Type-erased and callable objects
Get Hands-On Design Patterns with C++ now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.