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