New user self-registration is disabled due to spam. Please email eigen-core-team @ if you need an account.
Before reporting a bug, please make sure that your Eigen version is up-to-date!
Bug 1692 - pass enumeration argument to constructor of VectorXd
Summary: pass enumeration argument to constructor of VectorXd
Alias: None
Product: Eigen
Classification: Unclassified
Component: Core - general (show other bugs)
Version: 3.3 (current stable)
Hardware: All All
: Normal Unknown
Assignee: Nobody
Depends on:
Blocks: 3.4
  Show dependency treegraph
Reported: 2019-03-17 15:07 UTC by Huang Qinjin
Modified: 2019-03-19 14:00 UTC (History)
3 users (show)


Description Huang Qinjin 2019-03-17 15:07:19 UTC
Currently, the constructor of VectorXd requires Integer by the assertion of NumTraits<T>::IsInteger to specify the length. Will it be fine to releax to any type  that convertible to int, such as a enumeration. The following code gets compilation

    enum : int {
        Size = 2,

    VectorXd V(Size);
Comment 1 Gael Guennebaud 2019-03-17 15:56:27 UTC
In the devel branch we already have internal::is_valid_index_type<T> for that purposes. It is used to detect singletons in operator(row_indices,col_indices), so we would just have to use that.
Comment 2 Gael Guennebaud 2019-03-17 21:03:40 UTC

and backported to 3.3.

Thank you for reporting.
Comment 3 Christoph Hertzberg 2019-03-18 09:50:09 UTC
The unit test does not compile in C++03 mode (due to using anonymous enums, similar to Bug 1549).
But since this was not possible before, we could just disable this test in that case.
Comment 4 Gael Guennebaud 2019-03-18 10:08:42 UTC
yes, I've seen that this morning.
Comment 5 Christoph Hertzberg 2019-03-19 14:00:50 UTC
I think this is also due to that change: smallvectors fails in C++03 mode:

Also in C++11 mode with gcc-4.8, but that might as well be an error in gcc.

Note You need to log in before you can comment on or make changes to this bug.