This documentation is archived and is not being maintained.

Compiler Error C2107

illegal index, indirection not allowed

A subscript is applied to an expression that does not evaluate to a pointer.

C2107 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 in Value and Reference Types.

The following sample generates C2107.

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

value struct B {
   property String ^ default[String ^] {
      String ^ get(String ^ data) {
         return "abc";
   void Test() {
      Console::WriteLine("{0}", this["aa"]);   // C2107
      Console::WriteLine("{0}", this->default["aa"]);   // OK

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