The following snippet leads a stack overflow because of an infinite recursion:
using Vector2fD = Array<DiffArray<float>, 2>;
using Matrix2x2f = Matrix<float, 2>;
Vector2fD y(.2f, .3f);
auto [s, c] = sincos(0.7853981633974483f);
Matrix2x2f m(c, s, -s, c);
Vector2fD z = m * y; // here
Here is a the beginning of the call stack:

Built with MSVC16, without CUDA, commit e240a4b
The following snippet leads a stack overflow because of an infinite recursion:
Here is a the beginning of the call stack:
Built with MSVC16, without CUDA, commit e240a4b