Cannot convert from 'T[N][2]' to 'T[][2]'
<p>I have an API taking some options:</p>

<pre><code>void init_api(const char* options[][2]);
</code></pre>

<p>I am allowed to pass a NULL pointer for no options, alternatively, an options array such as this can be passed:</p>

<pre><code>const char* some_options[][2] = { {"opt1", "val1"}, 
                                  {"opt2", "val2"}, 
                                  {0,0} 
                                };
</code></pre>

<p><em>This</em> works without problems:</p>

<pre><code>...
init_api(some_options);
... or ...
init_api(NULL);
...
</code></pre>

<p>However, <em>this fails to compile</em>:</p>

<pre><code>const char* my_options[][2] = NULL; // error C2440: 'initializing' : cannot convert from 'int' to 'const char *[][2]'
if(...) {
  my_options = some_options; // error C2440: '=' : cannot convert from 'const char *[4][2]' to 'const char *[][2]'
}
init_api(my_options); // no error here
</code></pre>

<p>What is going on here? Can someone explain this?</p>
