|  | template <class ArgType> | 
|  | class Circulant : public Eigen::MatrixBase<Circulant<ArgType> > | 
|  | { | 
|  | public: | 
|  | Circulant(const ArgType& arg) | 
|  | : m_arg(arg) | 
|  | { | 
|  | EIGEN_STATIC_ASSERT(ArgType::ColsAtCompileTime == 1, | 
|  | YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX); | 
|  | } | 
|  |  | 
|  | typedef typename Eigen::internal::ref_selector<Circulant>::type Nested; | 
|  |  | 
|  | typedef Eigen::Index Index; | 
|  | Index rows() const { return m_arg.rows(); } | 
|  | Index cols() const { return m_arg.rows(); } | 
|  |  | 
|  | typedef typename Eigen::internal::ref_selector<ArgType>::type ArgTypeNested; | 
|  | ArgTypeNested m_arg; | 
|  | }; |