The problem which is affecting us is that MSVC does not inline functions returning an unwindable object (an object having a non-trivial destructor or an object having members with non-trivial destructors). Here is an example where the __forceinline is ignored unless exception handling is disabled.
void main () { UnwindableTemplate<float> unwind = create_unwindable<float>();
}
Here, I choose the unwindable object to mimik our ei_matrix_storage classes for the particular case when we are dealing with dynamic sized objects. As a consequence, this leads to the fact that functions returning expressions containing matrix members by value will not be inlined. Currently it seems as if this can not be remedied. Returning a reference to a local temporary seems tempting since we are anyways trying to enforce inlining but I would refrain from such a solution and say we just live with it.
It seems as if with newer compiler versions the SSE issue mentioned in the forum is fixed and not our actual problem.