- explicit virtual operator double() { abort(); }
- explicit virtual operator string() { abort(); }
- double double_default(double def) { return given() ? (double) *this : def; }
- const string string_default(const string def) { return given() ? (string) *this : def; }
+ int as_int(int def) { return def; }
+ double as_double(double def) { return def; }
+ const string as_string(const string def) { return def; }