use by Matrix row accessor. */
Vector(const T *, unsigned);
-#if __cplusplus >= 201103L
template<typename... Args>
Vector(T, Args...);
-#else
- Vector(T, T);
- Vector(T, T, T);
- Vector(T, T, T, T);
-#endif
+
template<typename U>
Vector(const Vector<U, N> &);
(*this)[i] = d[i*stride];
}
-#if __cplusplus >= 201103L
template<typename T, unsigned N>
template<typename... Args>
inline Vector<T, N>::Vector(T x_, Args... v)
for(auto c: std::initializer_list<T> { static_cast<T>(v)... })
(*this)[i++] = c;
}
-#else
-/* 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_;
-}
-#endif
template<typename T, unsigned N>
template<typename U>