I found this possible problem/limitation with 1731 but it may have been there in earlier versions. When using #defines for long lists of template parameters, VAX does not recogize any of the parameters as valid symbols. Here is a simplified example.
I am seeing the same effect here. Thank you for the clear description.
case=31857
Although you made a little typo:
#define PARAMS Param2
should be
#define PARAMS P
Since you used "int P" as the template argument in Test case 2. I never separate template class member definitions from the declarations so it have taken a while to figure out the problem (why doesn't it compile). But certainly, you have done the hard part of the work. The essential is on the screenshot.