Compiler Error C2108


subscript is not of integral type

The array subscript is a noninteger expression.


C2108 can occur if you incorrectly use the this pointer of a value type to access the type's default indexer. For more information, see Semantics of the this pointer.

The following sample generates C2108.

// C2108.cpp
// compile with: /clr
using namespace System;

value struct B {
   property Double default[Double] {
      Double get(Double data) {
         return data*data;
   void Test() {
      Console::WriteLine("{0}", this[3.3]);   // C2108
      Console::WriteLine("{0}", this->default[3.3]);   // OK

int main() {
   B ^ myb = gcnew B();