If a class is legitimately CLS compliant, the only features one should require languages to support things beyond the CLS minimum requirements would be those which would be meaningless in the absence of such features. For example, a CLS-compliant method group may include overloads for unsigned integer types if any functionality provided by those methods would be available via other means.
If a class is supposed to do something like provide a means of reading and writing unsigned 32-bit values from some external data set, CLS compliance would not forbid the type from providing methods that read and write data of type UInt32
, but would require that any data which could be read or written via such methods must be readable by other methods that do not require that type [e.g. they could use Int64
instead]. Client code which uses Int64
might less efficient than would be code using UInt32
, but the failure of a language to support UInt32
wouldn't prevent the client code from doing what it needs to do--it would merely slow it down slightly.