"Peter Dimov" <[EMAIL PROTECTED]> writes: > Maybe the problems are caused by overloading void_.
Clearly. > I haven't looked at MPL recently, but as a general observation I > have identified at least three uses of a void_-like entity. > > 1. A type parameter used to emulate a variable argument template. I use > '_missing' for this purpose (leading underscore for implementation details.) > > template<class A1 = _missing, class A2 = _missing, ...> struct F; I think this is the one that has the special correspondence with the real "void", but Aleksey wanted to change its name. > 2. An optional parameter that, when not supplied, has a reasonable > (dependent) default. I use 'unspecified'. > > template<class R = unspecified, class F> ... bind(F f); I use 'not_specified' to distinguish it from the alarming connotations of 'unspecified' behavior. > > 3. A type that is guaranteed to be distinct from all other useful types. > 'nil' is what Lisp calls it; void_ is fine, too. It depends whether it has special meaning in the library so that it can't be manipulated as all other types are. If so, you'd better not use it this way. Of course, in the case that sparked this conversation we could make our specialization on void_ behave properly, but I'm not sure if that's true in general. -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost