+ for(unsigned i=0; i<N; ++i)
+ (*this)[i] = d[i];
+}
+
+/* The compiler won't instantiate these unless they are used. Trying to use
+them on the wrong class results in an error. */
+template<typename T, unsigned N>
+inline Vector<T, N>::Vector(T x_, T y_)
+{
+ this->VectorComponents<T, 2>::x = x_;
+ this->VectorComponents<T, 2>::y = y_;
+}
+
+template<typename T, unsigned N>
+inline Vector<T, N>::Vector(T x_, T y_, T z_)
+{
+ this->VectorComponents<T, 3>::x = x_;
+ this->VectorComponents<T, 3>::y = y_;
+ this->VectorComponents<T, 3>::z = z_;
+}
+
+template<typename T, unsigned N>
+inline Vector<T, N>::Vector(T x_, T y_, T z_, T w_)
+{
+ this->VectorComponents<T, 4>::x = x_;
+ this->VectorComponents<T, 4>::y = y_;
+ this->VectorComponents<T, 4>::z = z_;
+ this->VectorComponents<T, 4>::w = w_;