ah, this is so much more beautiful than my last design . . . derive someFile from file::kBase, drop it into a file::kWrapped< someFile >, point that at the file::kManager to register it, then downcase it to file::kWrapinterface and snap it into place. So pretty. And if someFile needs subfiles, I can just add those in without the whole wrap interface. When I need to get these out, I'll just call file::kManager with the appropriate registered string or identifier or however I should choose to do it and pull a file::kHandle< baseClass > out, all prettily downcasted and typesafe. It won't even *know* what class it used to be. I can change file formats and encoding strategies completely, without even needing to touch the code. It's perfect. The interfaces are all down, I just need to write the functions . . . well, file::kManager isn't designed yet, but there's only one merge point for that anyway, just as it should be. Minimal coupling, and what's there is so, so strong . . . this interface is gold. I will never have to touch it :)
Well, not entirely true. A few changes will likely need to be made. Perhaps file::kWrapped will need to do some slightly more intelligent allocation based on file information, but I can just add a few more keys to file::kBase for that. And eventually I'll add a memory deallocator aggressiveness slider, and that will take a little tweaking of file::kWrapinterface . . . but no worries. No worries at all :)
and I've even got strange loud instrumental music playing. Life is, for the time being, good.