First of all, variable-length arrays (and pointers to variable-length arrays) are a C99 language feature, not yet supported by Visual Studio at all (they didn't support any C past C89 until very recently, but started adding C99 and C11 features in 2013 and 2015, but didn't get to VLAs yet). Good news is that variable-length arrays do not appear anywhere in your program.
The type of the pointer test is int(*)[][2], pointer to fixed-size array of unknown bound of arrays of 2 int
C, but not C++, allows initialization (and assignment) of a pointer of type int(*)[][2] from a pointer of type int(*)[3][2] and vice versa. You can get your program to compile in Visual Studio if you engage the C compiler, not the C++ compiler:
http://rextester.com/VDPK45252
Note that pointers to arrays of unknown bound have limited use, for example you can't form expressions "test++" or even "test[0]". About the only thing you can do is dereference it (so (*test)[0][0] works)
If you're actually using C++, as the error message "cannot convert..." suggests, then use C++ containers, such as std::vector<pair<int, int>>
PS: this conversion may become allowed in C++ in future, see
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4325.html#118