Most vexing parse in SparseSparseProductWithPruning.h under C++20
## Summary
`Eigen/src/SparseCore/SparseSparseProductWithPruning.h` contains three variable declarations using parenthesized initialization that trigger the C++ most vexing parse ambiguity under C++20:
- Line 90 (ColMajor,ColMajor,ColMajor): `remove_all_t<ResultType> res_(res.rows(), res.cols());`
- Line 102 (ColMajor,ColMajor,RowMajor): `SparseTemporaryType res_(res.rows(), res.cols());`
- Line 113 (RowMajor,RowMajor,RowMajor): `remove_all_t<ResultType> res_(res.rows(), res.cols());`
## Fix
Switch from parenthesized initialization `(...)` to brace initialization `{...}`:
```cpp
remove_all_t<ResultType> res_{res.rows(), res.cols()};
SparseTemporaryType res_{res.rows(), res.cols()};
```
Minimal 3-line change, no behavioral difference — `SparseMatrix` constructors accept the same arguments via braces.
## Reference
GitHub PR with the minimal patch: https://github.com/thebandofficial/eigen/pull/1
issue