Binsof usage in cross coverage in system verilog

Is this allowe? Can I use binsof() without using intersect?
I am facing an error

cp1 : coverpoint a iff (expr)
            {
              bins a_1 = {[1:3]};
              bins a_2 = {[3:5]};
            }
 
         cp2 : coverpoint b iff (expr)
            {
              bins b_1 = {2};
              bins b_2 = {9};
            }
 
         cr1 : cross cp1, cp2 iff (expr)
            {
              bins binval = binsof (cp1.a_1) && binsof (cp2.b_1);

In reply to amb_verif:

It would help to show a complete example and the error you are getting. I see nothing wrong with your code other than it is incomplete.