On Sunday, July 13, 2003, at 08:49 AM, Peter Dimov wrote:

Maybe the problems are caused by overloading void_. 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;

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);

3. A type that is guaranteed to be distinct from all other useful types.
'nil' is what Lisp calls it; void_ is fine, too.

Another possible spelling for this animal is:


class nat {nat();};

Inspired from nan. In this case means Not A Type. It is nice and short which comes in handy for when there are a lot of template parameters to default. It is easily pronounceable, and won't be confused with any other type when discussed verbally.

-Howard

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to