[모던C++입문] 3.7 템플릿이 아닌 템플릿 매개변수

    3.7 타입이 아닌 템플릿 매개변수

    • 값도 템플릿 인자가 될 수 있다.
    • 정수, bool, 토인터 타입만 가능
    template <typename T, int Size>
    class fsize_vector 
    {
        using self = fsize_vector;
    public:  
        using value_type= T;
        const static int     my_size = Size;
    
        fsize_vector(int s= Size) { assert(s == Size); }
    
        self& operator=(const self& that) 
        {
            std::copy(that.data, that.data + Size, data);
            return *this;
        }
    
        self operator+(const self& that) const 
        {
            self sum;
            for (int i= 0; i < my_size; ++i) 
                sum[i]= data[i] + that[i];
            return sum;
        }
    private:
        T   data[my_size];
    };
    
    fsize_vector<float, 3> v;
    fsize_vector<float, 4> w;
    v = w;      //오류 : 동일한 사이즈의 벡터끼리만 가능하다
    반응형

    댓글

    Designed by JB FACTORY