template을 typedef 하려면?

template<size_t N, size_t M>
class Matrix {
    // ....
};

이런 코드가 있을 때

함수에서 default parameter를 정하면 호출할 때 따로 안 적어도 되는 것처럼 typedef Matrix<N,1> Vector<N>; 이런 식으로 쓰고 싶어요. 근데 컴파일이 안돼요...

밑의 코드를 쓰면 컴파일은 되는데 제가 원하는 거랑은 쫌 달라요.

template <int N>
class Vector: public Matrix<N,1>
{ };

도와주세요ㅜㅜ

1답변

  • 좋아요

    1

    싫어요
    채택취소하기

    C++11은 alias declarations을 지원합니다. typedef가 좀더 일반화(generalization) 돼서 이젠 템플릿에서도 밑의 코드같이 쓸 수 있어요!

    template <size_t N>
    using Vector = Matrix<N, 1>;
    The type Vector<3> is equivalent to Matrix<3, 1>.
    

    C++03에서 제일 비슷한건

    template <size_t N>
    struct Vector
    {
        typedef Matrix<N, 1> type;
    };
    

    같이 쓰는 거네요. Vector<3>::type의 type이 Matrix<3, 1>과 같아집니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.