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
is defined for.
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
VecTraits could change for that type in backward-incompatible
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)