
On 13.06.2009, at 20:27, Matt Calabrese wrote:
or the nontemplate, but not both, you could always spread the change across a few versions to make things easier for users and avoid a very sudden breaking change. For instance, you could add the noncopyable_ template for a few versions, deprecating noncopyable but leaving it in. Then, remove the noncopyable spelling completely and have both noncopyable_ and noncopyable be templates, with the underscored version deprecated. Finally, remove the underscore version entirely and be left with noncopyable as a template.
Sounds like a reasonable plan, but just adding noncopyable_<T> as an alternative and leaving noncopyable as it is is also fine with me. I don't have any strong feelings on this, I just tried to express that I personally wouldn't mind a breaking change.
Boost.Python would have to be updated accordingly but that wouldn't be much of a problem -- it could either switch to using its own noncopyable tag type or use noncopyable<>, where noncopyable would have an unspecified default.
I haven't looked at it, but as you describe it, it sound as if they should just create their own tag type anyway as they are simply misusing noncopyable. What might work technically is still wrong if it communicates the wrong thing. Regards, Daniel