Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake compile error: numbertraits.hpp:70:16 #294

Open
hxlee309 opened this issue Jun 5, 2023 · 1 comment
Open

cmake compile error: numbertraits.hpp:70:16 #294

hxlee309 opened this issue Jun 5, 2023 · 1 comment

Comments

@hxlee309
Copy link

hxlee309 commented Jun 5, 2023

Hi,

I am getting the following error when compiling with cmake. Any idea about how to fix the issue? Thanks.

hanxiang@hanxiang-OMEN-30L-Desktop-GT13-1xxx:~/autodiff/.build$ cmake --build . --target install
[ 1%] Building CXX object tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/forward/dual/eigen.test.cpp.o
In file included from /home/hanxiang/autodiff/autodiff/forward/dual/dual.hpp:42:0,
from /home/hanxiang/autodiff/autodiff/forward/dual.hpp:33,
from /home/hanxiang/autodiff/tests/forward/dual/eigen.test.cpp:35:
/home/hanxiang/autodiff/autodiff/common/numbertraits.hpp: In instantiation of ‘autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&)::<lambda(auto:15&)> [with auto:15 = Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>; Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]’:
/home/hanxiang/autodiff/autodiff/common/meta.hpp:141:10: required from ‘autodiff::detail::ForEach(Tuple&&, Function&&)::<lambda(auto:3)> [with auto:3 = autodiff::detail::Index<0>; Tuple = const std::tuple<Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&>&; Function = autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]::<lambda(auto:15&)>]’
/home/hanxiang/autodiff/autodiff/common/meta.hpp:97:10: required from ‘constexpr auto autodiff::detail::AuxFor(Function&&) [with long unsigned int i = 0; long unsigned int ibegin = 0; long unsigned int iend = 1; Function = autodiff::detail::ForEach(Tuple&&, Function&&) [with Tuple = const std::tuple<Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&>&; Function = autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]::<lambda(auto:15&)>]::<lambda(auto:3)>]’
/home/hanxiang/autodiff/autodiff/common/meta.hpp:105:33: required from ‘constexpr auto autodiff::detail::For(Function&&) [with long unsigned int ibegin = 0; long unsigned int iend = 1; Function = autodiff::detail::ForEach(Tuple&&, Function&&) [with Tuple = const std::tuple<Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&>&; Function = autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]::<lambda(auto:15&)>]::<lambda(auto:3)>]’
/home/hanxiang/autodiff/autodiff/common/meta.hpp:111:17: required from ‘constexpr auto autodiff::detail::For(Function&&) [with long unsigned int iend = 1; Function = autodiff::detail::ForEach(Tuple&&, Function&&) [with Tuple = const std::tuple<Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&>&; Function = autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]::<lambda(auto:15&)>]::<lambda(auto:3)>]’
/home/hanxiang/autodiff/autodiff/common/meta.hpp:140:11: required from ‘constexpr auto autodiff::detail::ForEach(Tuple&&, Function&&) [with Tuple = const std::tuple<Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&>&; Function = autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]::<lambda(auto:15&)>]’
/home/hanxiang/autodiff/autodiff/forward/utils/gradient.hpp:67:12: required from ‘constexpr auto autodiff::detail::ForEachWrtVar(const autodiff::detail::Wrt<Vars ...>&, Function&&) [with Function = autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]::<lambda(auto:16&&, auto:17&&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]’
/home/hanxiang/autodiff/autodiff/forward/utils/gradient.hpp:97:18: required from ‘void autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&, G&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>; G = Eigen::Matrix<double, -1, 1>]’
/home/hanxiang/autodiff/autodiff/forward/utils/gradient.hpp:114:13: required from ‘auto autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&, Y&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Y = autodiff::detail::Dual<double, double>]’
/home/hanxiang/autodiff/autodiff/forward/utils/gradient.hpp:123:20: required from ‘auto autodiff::detail::gradient(const Fun&, const autodiff::detail::Wrt<Vars ...>&, const autodiff::detail::At<Args ...>&) [with Fun = CATCH2_INTERNAL_TEST_0()::<lambda(const VectorXdual&)>; Vars = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}; Args = {Eigen::Matrix<autodiff::detail::Dual<double, double>, -1, 1, 0, -1, 1>&}]’
/home/hanxiang/autodiff/tests/forward/dual/eigen.test.cpp:184:51: required from here
/home/hanxiang/autodiff/autodiff/common/numbertraits.hpp:70:16: internal compiler error: in tsubst, at cp/pt.c:13602
constexpr auto Order = NumberTraits<PlainType>::Order;
^~~~~
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-7/README.Bugs for instructions.
tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/build.make:118: recipe for target 'tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/forward/dual/eigen.test.cpp.o' failed
make[2]: *** [tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/forward/dual/eigen.test.cpp.o] Error 1
CMakeFiles/Makefile2:323: recipe for target 'tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/all' failed
make[1]: *** [tests/CMakeFiles/autodiff-cpptests-implicit-conversion.dir/all] Error 2
Makefile:146: recipe for target 'all' failed
make: *** [all] Error 2

@allanleal
Copy link
Member

Hi, I introduced tests these past days with AUTODIFF_ENABLE_IMPLICIT_CONVERSION and some errors were happening in Windows only due to Catch2::Approx not resolving operator== overloads correctly. I fixed them yesterday. Please make sure you are using the most recent version. If that's the case, I'll investigate. You can also edit CmakeLists.txt and remove the target autodiff-tests-implicit-conversion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants