I think the idea here is just to put names onto traditional SOA. Thus, instead of doing `foo_xs[k] += foo_dxs[k]`, one does `foo.x += foo.dx` and lets it all magically resolve itself.<p>In theory, this should help the compiler automatically vectorize (than AOS), but even if it doesn&#x27;t it still allows you to use a slightly higher-level interface for loading your values for manual SIMD.<p>Note that at the end, the poster says<p>&gt; Traversal is at the core of DOD, as the paradigm is oriented towards handling large numbers of like objects. In a later entry we will extend this framework to provide for easy object traversal and measure the resulting performance as compared with OOP.<p>I also agree that recursive templates are a pain, but &quot;modern&quot; C++ kind&#x27;a expects you to use them anyway. As recursive templates go, this one isn&#x27;t all that bad to use.