Specifying bound ( $ ) within constraint "inside"

[I] LRM 11.4.13 :: "A bound specified by $ shall represent the lowest or highest value
for the type of the expression on the left-hand side. "

So using ‘$’ within constraint


 rand bit [1:0] a , b , c ;
 
 constraint INSIDE_RANGE {    a inside { [0:$] } ; // (a)
                              b inside { [$:0] } ; // (b)
                              c inside { [$:$] } ; // (c) :: I know doesn't make Sense !!
                          }

I Observe that both (a) and (b) Works fine but I see a Compilation Issue with (c) on Some ( Licensed ) Simulators but works on some

[Q1] Is (c) legal ?

[II] LRM 11.4.13 :: " When specifying a range, the expressions shall be of a singular type for
which the relation operators ( <=, >= ) are defined."

 So from LRM 8.4 I know that class handle can't be used as an expression **since relational operators are ILLEGAL for class handles .**
 **[ Using handle.property would be Legal as an expression however !! ]**

[Q2] What else would be Illegal as an expression for inside ??

In reply to Have_A_Doubt:

The BNF for an open_value_range allows only
[ expression : ]</span> or <span style="font-family:'courier'"> [ : expression ]
.

The remaining illegal singular types would be chandle, virtual interface, event, and string.