特征矩阵const类型
eigen matrix const type
考虑以下测试
Eigen::MatrixXd B(Eigen::MatrixXd::Random(5,5));
const Eigen::MatrixXd C(Eigen::MatrixXd::Random(5,5));
std::cout << "B " << typeid(B).name() << std::endl;
std::cout << "C " << typeid(C).name() << std::endl;
std::cout << " === " << std::endl;
std::cout << "B.T " << typeid(B.transpose()).name() << std::endl;
std::cout << "C.T " << typeid(C.transpose()).name() << std::endl;
及其输出
B N5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE
C N5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE
===
B.T N5Eigen9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE
C.T N5Eigen9TransposeIKNS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE
脱角
B Eigen::Matrix<double, -1, -1, 0, -1, -1>
C Eigen::Matrix<double, -1, -1, 0, -1, -1>
===
B.T Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> >
C.T Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> const>
为什么C
未显示为const
?eigen如何找出它?这是一个特征问题,还是typeid
?
这是由于 typeid
的行为:
§5.2.8/5 [expr.typeid] glvalue表达式的顶级CV- Qualifier或 type-id 是
typeid
的操作数总是被忽略。
因此,在这两种情况下,typeid
仅适用于Eigen::MatrixXd
。
相关文章:
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 视觉工作室 2017;启用 /permissive 时,类型 "const wchar_t *" 的参数与类型 "PWSTR" 的参数不兼容
- 无法使用类型 'const char *' 的左值初始化类型 'char *' 的成员子对象
- "const wchar_t *" 类型的值不能用于初始化类型 "const PWSTR" 的实体
- 错误:对类型 'const ItemInstance' 的引用无法绑定到类型 'void' 的右值
- C++ 类型 "char" 的参数与类型 "const char" 的参数不兼容
- 在这种情况下,如何从类型 "const char*" 初始化字段?
- 类型"const char[2]"的值不能隐式转换为"int"错误C++
- 错误:数组下标的类型"const bool[int]"无效
- 错误:C2679 二进制"==":未找到采用类型 'const std::string' 的右侧操作数的运算符(或者没有可接受的转换)
- 类型 "const char *" 的参数与类型 "char *" 的参数不兼容
- 错误:"->"的基本操作数具有非指针类型"const"
- 作为返回类型"const int&"做什么?
- 类型 "const char*" 的参数与类型 "char*" 的参数不兼容。但是为什么?:(
- 类型 "const char*" 的参数与类型 "Person" 的参数不兼容
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 类型 "const char *" 的参数与类型 "LPCWSTR" 的参数不兼容
- 错误:从不兼容的类型 'const char *' 分配给'char'
- 类型 "const char *" 的默认参数与类型 "char *" 的参数不兼容
- 类型 "const char *" 的参数与 "LPSTR" C++ 类型的参数不兼容