I tried to use an Eigen matrix type as the key to a `std::map`

with something like:

```
std::map<Eigen::VectorXd,bool> m;
```

But got compile-time errors of the sort:

```
error: no viable conversion from 'const CwiseBinaryOp<std::less<Scalar>, const Eigen::Array<double, -1, 1, 0, -1, 1>, const Eigen::Array<double, -1, 1, 0, -1, 1> >' to 'bool'
{return __x < __y;}
^~~~~~~~~
```

Seems that map wants a proper less than operator and Eigen has overloaded that with the coefficient-wise operator. A reasonable way to sort vectors would be lexicographically. Fortunately stl has a function for that, so I define my map like this:

```
std::map<
Eigen::VectorXd,
bool,
std::function<bool(const Eigen::VectorXd&,const Eigen::VectorXd&)> >
m([](const VectorXd & a, const VectorXd & b)->bool
{
return std::lexicographical_compare(
a.data(),a.data()+a.size(),
b.data(),b.data()+b.size());
});
```

This will ignore the internal ordering of the matrix elements (i.e. ColMajor vs RowMajor) but if you’re just using the `map`

for a uniqueness check this is good enough.