Missing exception description - how about:


    if (!is<object>()) throw type_mismatch("object element access attempted on non-object value");