#pragma once /** \file * \ingroup hyplib **/ #include "integer.hpp" #include "scalar.hpp" #include #include namespace hyporo { // Forward declaration of friend functions and operators template class VectorSpace; template std::ostream& operator<<(std::ostream&, const VectorSpace&); // Class declaration template class VectorSpace { public: //- The components of this vector space std::array row; // Static constants static const sizet nComponents = NC; // Constructors inline VectorSpace(); //inline VectorSpace(const VectorSpace&); template inline VectorSpace(const Args... components); // Member functions inline static sizet size(); // Member operators inline C& operator[](const sizet); inline VectorSpace& operator*=(const scalar); inline VectorSpace& operator/=(const scalar); // Friend operators friend std::ostream& operator<< (std::ostream&, const VectorSpace&); }; } // end namespace hyporo #include "VectorSpace.hxx"