Static Expression Bounds
The bound for the @numelts qualifier must be a static expression. A static expression is either a constant expression, or an expression involving valueof(T) for a type-level expression T. The valueof construct is used to connect the value of a run-time integer to the static bound on an array. For example, the following function takes in an integer num and pointer to a sequence of num integers and returns the sum of the sequence:
  int sum(tag_t<`n> num, 
          int *@notnull @numelts(valueof(`n)) p) {
    int a = 0;
    for (unsigned i = 0; i < num; i++) 
      a += p[i];
  }
The type of num is specified as tag_t<`n>. This simply means that
num holds an integer value, called `n, and the number of elements
of p is equal to n. This form of dependency is common enough that it
can be abbreviated as follows:
  int sum(tag_t num, int p[num]);
and the compiler will fill in the missing information.