I’m seeing a strange problem with rstan where a model compiles from Stan to C++ just fine, but then I get a compiler error when the generated C++ is compiled. I have the following user-defined function in the `functions`

block:

```
matrix constrainsgn(matrix b, int[] idxpos, int[] idxneg, int xform, real s) {
...
}
```

Then in the `transformed parameters`

block I have

```
matrix[nresp, ncov] t_beta =
constrainsgn(rep_matrix(t_alpha, nresp) + t_z_beta * Lbeta', idxpos, idxneg, xform, s);
```

I get the following C++ compiler error:

```
Error in compileCode(f, code, language = language, verbose = verbose) :
^file10aabec826b9.cpp:153:1: note: candidate template ignored: could not match 0 against 1constrainsgn(const Eigen::Matrix<T0__, Eigen::Dynamic, Eigen::Dynamic>& b,^72 warnings and 5 errors generated.make: *** [file10aabec826b9.o] Error 1
```

The problem goes away if I replace that `transformed parameters`

definition with these two lines:

```
matrix[nresp, ncov] tmp = rep_matrix(t_alpha, nresp) + t_z_beta * Lbeta';
matrix[nresp, ncov] t_beta = constrainsgn(tmp, idxpos, idxneg, xform, s);
```

Any idea what’s going on here?

The above workaround doesn’t really solve my problem, as I have a model already fit with `cmdstanr`

, and wanted access to rstan’s built in loo moment matching method (which `cmdstanr`

lacks). The plan was to create a `stanfit`

object from the CmdStan output files, but that won’t work if I have to modify the Stan model to have an additional transformed parameter that was not present during model estimation.