Eigen::ScalarBinaryOpTraits
шаблон<typename ScalarA, typename ScalarB, typename BinaryOp = internal::scalar_product_op<ScalarA,ScalarB>>
класс Eigen::ScalarBinaryOpTraits< ScalarA, ScalarB, BinaryOp >
Определяет, разрешена ли данная бинарная операция для двух числовых типов и какой является скалярный тип возвращаемого значения.
Этот класс позволяет управлять скалярным типом возвращаемого значения любой бинарной операции, выполняемой над двумя различными скалярными типами посредством (частичных) специализаций шаблонов.
Например, пусть U1, U2 и U3 — три пользовательских скалярных типа, для которых большинство операций между экземплярами U1 и U2 возвращает U3. Вы можете сообщить об этом Eigen, определив:
template<typename BinaryOp> struct ScalarBinaryOpTraits<U1,U2,BinaryOp> { typedef U3 ReturnType; }; template<typename BinaryOp> struct ScalarBinaryOpTraits<U2,U1,BinaryOp> { typedef U3 ReturnType; };
Вы затем можете явно отключить некоторые конкретные операции, чтобы получить более явные сообщения об ошибках:
template<> struct ScalarBinaryOpTraits<U1,U2,internal::scalar_max_op<U1,U2> > {};
Или настроить тип возвращаемого значения для отдельных операций:
template<> struct ScalarBinaryOpTraits<U1,U2,internal::scalar_sum_op<U1,U2> > { typedef U1 ReturnType; };
По умолчанию поддерживаются следующие общие комбинации:
| ScalarA | ScalarB | BinaryOp | ReturnType | Примечание |
|---|---|---|---|---|
T |
T |
* |
T |
|
NumTraits<T>::Real |
T |
* |
T |
Только если NumTraits<T>::IsComplex |
T |
NumTraits<T>::Real |
* |
T |
Только если NumTraits<T>::IsComplex |
- См. также
- CwiseBinaryOp
Документация для этого класса была сгенерирована из следующего файла:
© Eigen.
Licensed under the MPL2 License.
https://eigen.tuxfamily.org/dox/structEigen_1_1ScalarBinaryOpTraits.html