IIRC, one of boost's smart ptrs can be used with an incomplete type. How is the compile of the destructor delayed?
ie
~my_smart_ptr()
{
get()->~T(); // error: T is an incomplete type
}
I wondered through lots of the shared_ptr code, but I got a bit bleary-eyed. On that note, does anyone have a script or preprocessor call or something that converts all the boost code into the 'clean and ideal boost'? ie the one without the layers and layers of compiler workarounds, etc? I think that version would be a much easier read. And maybe some day all compilers will support that version too. We can but dream...
Tony