How to write array of coverpoints with a condition when each coverpoint should be sampled?

I have 2 variables.
bit [31:0] enable and bit [31:0] value.
The 2 variables function in the following way. If enable[i] = 1, then value[i] can take values 0 or 1.

I want to write coverpoints for all the 32 bits of variable “value” as follows.

covergroup cg;

A1 : coverpoint value[0] iff (enable[0] == 1) {
bins value_0 = {0};
bins value_1 = {1};
}

A2 : coverpoint value[1] iff (enable[1] == 1) {
bins value_0 = {0};
bins value_1 = {1};
}

endgroup: cg

Instead of writing 32 coverpoints like this, Is there any other simpler way of writing the above covergroup and coverpoints like generate statement whcih is not possible inside covergroup definition?

In reply to balanandan14:

Create an array of covergroups.

See Array of cover points in a covergroup | Verification Academy