
Gordon Woodhull wrote:
int i = convert_cast<int>(s, 17, throw_even_though_i_specified_a_failback_); optional<int> i = convert_cast<int>(s, 17, use_optional_instead_of_throwing_);
These are for nondefaultable types.
Right, sorry, I am reading this somewhat out-of-order. But: all of the built-in numeric types are default-constructable, and I would guess that any definition of "numeric type concept" would include a default ctor that sets it to zero. So, I believe this is not useful. Presumably someone will now argue that this is a "general purpose conversion framework" that should work with lots of different types including some that are not default-constructable. I would reply that that is an unnecessary over-complication of the problem. We have perhaps four cases: - Numbers. - Enumerations. - Booleans, which can be considered much like one or other of the above. - Compound types. I would consider each of those independently. By all means try to be consistent between them, but don't try to unnecessarily coerce them all into a single feature. Regards, Phil.