<p>Under what circumstances might you want to use multiple indirection (that is, a chain of pointers as in <code>Foo **</code>) in C++?</p>

IMO most common usage is to pass reference to pointer variable
```
```
void test(int ** var)
{
 ...
}

int *foo = ...
test(&foo);
```
```
You can create multidimensional jagged array using double pointers:
```
```
int ** array = new *int[2];
array[0] = new int[2];
array[1] = new int[3];
```
```