Thread of 3 posts

jump to replies

>blender removes ceres+eigen from tree expecting you to provide system versions
>fine, package ceres which we didn't have, we already had eigen
>build fails mysteriously
>turns out the commit that removed eigen also "refactored" some invocations of some eigen stuff to syntax that is seemingly not compatible with any existing version of eigen

??? what are they doing

also stuff like `const int Options = ...; auto x = something<Options>()` is not even valid c++ (because Options is not a constant expression and you are passing it to a template argument), this is wack

9 visible replies; 6 more replies hidden or not public

back to top

ah, i figured it out

they added a second invocation that uses a template parameter in eigen 5.0 (which nothing really uses yet, and e.g. ceres, the other dep which they removed, does not compile against it in its latest tag)

this is a mess but at least it's explained

ofc the `const int Options = ...` and then passing it to a template arg is still invalid but i guess gcc will eat it because gcc eats a lot of invalid stuff

@TheOneDoc it's just stuff gcc eats, not really a documented extension, same with e.g. `strlen("foo")` being accepted in constant expressions in gcc because the frontend will fold it as a known thing resolvable at compile time, even though it is not, semantically

clang is a lot more strict and will not eat such things

@fiore @TheOneDoc well of course it will, technically

but yeah it should be an error

i suspect that this is some deficiency in gcc's design/layering that prevents it from erroring due to losing information, but i may be wrong