On Friday, February 10, 2012 16:36:48 Robert Jacques wrote: > These functions are _constructors_; ideally, they should be expressed as > such. In a managed language, we'd probably for with UUID("random",...). > And if explicit template ctors were valid syntax, we'd used > UUID!"random"(...) or UUID!Mt19937() or UUID!randomNumberBased or > something. There's also the enum/aliases, i.e. UUID(UUID.random) or > UUID(Enum!"random") or UUID(UUID.Version.randomNumberBased). And at least > for random, overloading works decently well, i.e. UUID(mySeed) or > UUID(Mt19937(unpredictableSeed)). My point, or lack thereof, was to > brainstorm ways of expressing a large variety of construction routines > _as_ actual constructors.
A factory function is vastly better than any of those suggestions IMHO. I see no problem with having randomUUID as a free function, and I really think that it's best as-is. - Jonathan M Davis