in my opinion changing the behavior of auto by guessing what the user want to have when writing auto is a bit far fetched. Codes that make use of the auto keyword are often more difficult to read and debug. This proposal will make thing even worse because it will be even more difficult to guess what is the actual type of an auto variable. Users should be educated to use the auto keyword only when writing the actual type explicitly is really difficult. An Eigen _expression_ is a typical case. Writing 'auto' when one want a MatrixXd is ridiculous. Anyway, once bug 99 is finalized the use of auto with Eigen will be much clearer:
auto xpr = A+B*(C-2*D).cwisePow(2);
auto mat = (A+B*(C-2*D).cwisePow(2)).eval();
xpr will be a pure abstract _expression_
mat will be an object with storage holding the result of the _expression_.
Good enough for me.
Having the possibility to disable auto for some given types would be nice through.
gael