template <class T, int N> class Vector { T a[N]; public: Vector(const T v) { for (unsigned i(0); i < N; ++i) a[i] = v; } }; template <> class Vector <double, 3> { double x, y, z; public: Vector(const double v): x(v), y(v), z(v) {} };