Yes, it has since at least 2010 (and probably earlier). See "scalar replacement": https://blogs.msdn.microsoft.com/vcblog/2009/11/02/visual-c-...
> Have you actually looked at that thing? It's not a Point struct, I can tell you that. There's nothing abstract about it.
The Vec classes can be used as Point structs.
> If you want to take advantage of SIMD fully, you need to lay out your data in a very specific way. A Point {x,y,z} struct doesn't naturally fit a SIMD register.
So pad it out to 4 fields, using homogeneous coordinates.
> Now, if you're willing to make a lot of assumptions on your compiler, you can do something like this: http://www.codersnotes.com/notes/maths-lib-2016/
That's not making a lot of assumptions about your compiler. The x87 floating point stack, for example, has been obsolete for a long time.
> If performance really matters then your abstract solution is almost certainly suboptimal and it's not good engineering practice to use it for the sake of readability.
I disagree. Let's look at actual examples. "Almost certainly" suboptimal abstractions are not what we've seen in Rust, for example, which leans on abstractions heavily.