i implementing si unit type system. ensure units don't leak in , out, don't want implicit conversion of values unit, , vice-versa. however, convenient able convert 0 unit system, bit can pointers, 0 implicitly converts null pointer, no other value does. so question is: can replicate kind of implicit conversion of 0 null pointer? or can use advantage achieve same thing? for example think of such constructor? constexpr unit_t(void*) : _value(0) { } note: unit in type, not in value. edit: why casting 0 unit? the reason want this, write algorithms don't know units. example, if have matrix of lengths , want invert it, first compute determinant, , if it's not 0, return inverse (otherwise, error). so convenient treat 0 literal generic unit. , happens pointers. can type: void* c = 0; but not: void f(int a) { void *c = a; } the classical solution pointer private type, user can't name. way, way can match through implicit conversion 0 . (usin...