c++ - 从模板函数返回 double 或 complex<double>

标签 c++ templates template-argument-deduction

我正在编写一些函数模板来重载 *矩阵类的运算符。我用 double 类型的矩阵做了很多工作和 complex<double> .是否可以编写一个返回正确类型的模板函数?例如:

template<class T, class U, class V>
matrix<V> operator*(const T a, const matrix<U> A)
{
    matrix<V> B(A.size(1),A.size(2));
    for(int ii = 0; ii < B.size(1); ii++)
    {
        for(int jj = 0; jj < B.size(2); jj++)
        {
            B(ii,jj) = a*A(ii,jj);
        }
    }
    return B;
}

我想要返回类型 VT*U的自然结果决定.这可能吗?

编辑:

后续 question我提出的问题收到的答案提供了适用于此处的额外信息。

最佳答案

在 C++11 中,您可以使用替代函数声明语法:

#include <utility> // for declval

template<class T, class U, class V>
auto operator*(const T a, const matrix<U> A) 
    -> decltype( std::declval<T>() * std::declval<U>() )
{
   //...
}

关于c++ - 从模板函数返回 double 或 complex<double>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17870504/

相关文章:

c++ - 设计具有部分通用实现的 C++ 类

c++ - 了解 QThread 的事件循环何时从另一个线程开始

java - 如何模拟二维图像中的衣服变化?

c++ - 无法专门化函数模板编译器错误

c++ - 将运算符 << 与隐式转换的非基本数据类型一起使用时出错

c++ - 在 copy-and-swap 习语中实现交换

c++ - 如何启用使用另一个类的静态方法的模板函数的自动推导,从而消除冗长的调用者代码

c++ - 可变参数模板的类型推导

c++ - 将std::make_pair与std::string一起使用(非右值引用问题)

C++ 模板元编程——根据运行时输入返回一个类型