| 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; | 
 | }; |