gpt4 book ai didi

c++ - 绕过 Eigen 静态断言

转载 作者:行者123 更新时间:2023-11-30 04:58:04 24 4
gpt4 key购买 nike

我有一些代码可以在 2 维或 3 维中运行。这是在编译时使用宏设置的。但是,以下会导致 Eigen 出现问题:

// Assume two vectors exist a and b
if (dimensions == 3) {
a.cross(b);
}

在二维中,即使此代码永远不会实际运行,叉积也会使 Eigen 的静态断言失效。

我该如何解决这个问题?如果可能的话,我想避免使用更多的宏。

最佳答案

您不能直接这样做,因为编译器应该能够为所有分支生成代码,无论它们是否在运行时实际采用。如果您可以访问 C++17 编译器并且 dimensionconstexpr,则可以使用 if constexpr:

template<int dimension>
void foo()
{
...
if constexpr (dimension == 3) {
a.cross(b);
}
...
}

如果您的编译器不支持 if constexpr,您可以使用标签调度来模仿它。

关于c++ - 绕过 Eigen 静态断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51834637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com