Implement VecTraits class for all types
The VecTraits
class allows templated functions, methods, and classes to
treat type arguments uniformly as Vec
types or to otherwise differentiate
between scalar and vector types. This only works for types that VecTraits
is defined for.
The VecTraits
templated class now has a default implementation that will
be used for any type that does not have a VecTraits
specialization. This
removes many surprise compiler errors when using a template that, unknown
to you, has VecTraits
in its implementation.
One potential issue is that if VecTraits
gets defined for a new type, the
behavior of VecTraits
could change for that type in backward-incompatible
ways. If VecTraits
is used in a purely generic way, this should not be an
issue. However, if assumptions were made about the components and length,
this could cause problems.
Fixes #589 (closed)