c++ - 转换为相同基础类型时的特征行为
问题描述
我有一个模板类,MyClass<...>
它具有类型的成员变量,Eigen::Matrix<X, N, M>
其中X
是特定实例的本机模板参数MyClass
。
假设我上述类型的私有变量是myVar
. 为了使setMyVar
函数通用,我将其定义为模板函数,如
template <typename U>
void setMyVar(const Eigen::Matrix<U, 3, 1>& newVal) const {
// myVar is of type Eigen::Matrix<T, 3, 1>
myVar = newVal.cast<T>();
}
我的问题是 Eigen 是否跳过铸造操作以防万一T == U
。
我对学习 Eigen 在这种情况下的行为特别感兴趣。否则,我非常了解替代解决方案,例如使用 SFINAE 强制编译器在正确的重载中进行选择setMyVar
或使用if constexp (std::is_same_v<T, U) {...} else {...}
(对于 c++17)来决定在编译期间是否需要强制转换。
谢谢
解决方案
推荐阅读
- javascript - TicTacToe 按钮一直以直线而不是网格显示
- c++ - 我是否以错误的方式声明了 getpriorityvalues 函数?
- python - 如何在等待计时器完成时在 shell 中输入?
- flutter - WillPopScope 导航页面变化 Flutter
- python - 检查周围的地雷扫雷pygame?
- azure - Azure 翻译文本
- r - 为什么我的有效正则表达式模式在 R 中不起作用
- javascript - 打印带有索引和值的数组元素
- python - 无法在项目源代码中停止循环
- tensorflow-datasets - 查询 Tensorflow 数据集的结构——行、列、形状