[eigen] Taking advantage of C++11 features in Eigen

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Good evening!

I’m recently starting to follow the Eigen project and I was wondering which is the current status
of C++11 features support inside the library. It seems the library is “compatible” with C++11, 
meaning that it compiles and works properly with the new standard, but does not take
advantage of new features when available.

The most important and obvious I can think of:
- Some Eigen types could take advantage of move semantics (for example dynamic matrices)?
- Could the new initializer list syntax be added to matrix types?
- Could the library avoid a lot of alignment problems with vectorizing code using
  the new core-language support for the alignas() keyword? Also, custom “aligned” allocation
  logic could be avoided with the new alignment support, and it could result in better performance
  since the compiler and the runtime get to know what you need.
- Is there some use for “r-value references for this” in the optimization of the operations execution?
  with this feature, we can now distinguish when a member function is called on an l-value or an
  r-value (most probably a temporary object). I think it’s worth investigating which optimizations
  can be enabled knowing this fact. What do you think?

Other minor issues:
- Is there a plan to use decltype to improve the reliability of the result_of<> trait in Meta.h?
- In C++11 mode, defining non_copyable (again in Meta.h) in terms of the ‘delete’ keyword
  instead of private copy constructors can improve diagnostics

I would like to contribute in this area (as a starter project to gain confidence with Eigen internals).

What do you think about it?

Thank you and congratulations for the great work!
Nicola


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/