Created attachment 643 [details]
Minimal example code to reproduce the bug.
In the file Eigen_Colamd.h, the line 519 "if (Col [col].length < 0)" can sometimes lead to compilation errors depending on the surrounding user code.
A seemingly benign minimal example is given in attachment, where the user creates a templated "length" function, included in a header before Eigen. This leads to compilation errors "Eigen_Colamd.h:519:19: error: parse error in template argument list" and "Eigen_Colamd.h:519:5: error: ‘length’ is not a member template function".
Using > instead of < for the comparison does the trick here, but there might be some other places where such an issue can arise.
Thanks for the report. This is likely caused by a gcc bug:
I worked-around using parentheses (for devel and 3.2):