It is legal to throw exceptions in a ternary operator. However, this
struct uncopiable { uncopiable(const uncopiable&) = delete; }; struct foo { unco