Due to the syntax description of Uppaal it should be possible to pass structs to templates as parameters. When I try to do this I get "Incompatible argument" in the Process assignment. I'm using the alpha3-pre1.
Created attachment 80 [details] test case
As for the particular testcase, the argument is indeed incompatible, since UPPAAL uses name equivalence rather than structural equivalence for type checking structures. The correct approach is to use a typedef to assign a name to the structure. However, even when using a typedef, UPPAAL complains about an incompatible type (unless call by reference is used).
Seems that Uppaal always complains about incompatible argumenbts when call by value is used.
Actually, UPPAAL was right even when using call by value: For call by value the argument of course needs to be a constant. Everything is ok if the system is redeclared as: typedef struct{int a;} T; const T str1 = { 1 }; process P(T rec) {...} Q=P(str1); However, I wil not close this bug: When even I get fooled, then the error messages must be improved :-) . I did reduce the severity, though.
The error message for non-constant arguments to value template parameters has been fixed on the trunk (revision 1335).