struct vec3 { virtual ~ vec3() { } vec3( const vec3 & ) = default ; // Nope float x{ 0.f }; float y{ 0.f }; float z{ 0.f }; }; Defensive programming fixes these “gotchas”.
struct vec3 { virtual ~ vec3() { } vec3( const vec3 & ) = default ; float x{ 0.f }; float y{ 0.f }; float z{ 0.f }; }; static_assert