1namespace Eigen {
2  namespace internal {
3    template <class ArgType>
4    struct traits<Circulant<ArgType> >
5    {
6      typedef Eigen::Dense StorageKind;
7      typedef Eigen::MatrixXpr XprKind;
8      typedef typename ArgType::StorageIndex StorageIndex;
9      typedef typename ArgType::Scalar Scalar;
10      enum {
11        Flags = Eigen::ColMajor,
12        RowsAtCompileTime = ArgType::RowsAtCompileTime,
13        ColsAtCompileTime = ArgType::RowsAtCompileTime,
14        MaxRowsAtCompileTime = ArgType::MaxRowsAtCompileTime,
15        MaxColsAtCompileTime = ArgType::MaxRowsAtCompileTime
16      };
17    };
18  }
19}
20