我有以下问题。 对于我的一个模板类,我也想采用其他两种类型的第一个应用的乘法运算符的类型。换句话说,如果我采用两个类实例并将它们相乘,那将是结果类型。
例如,鉴于T,S类型,我想要一些可以确定Q类型的东西。
Q operator*(T& a, S& b);
如果运算符是类成员,它也应该工作。
class T{
Q operator*(S& a);
};
有可能吗?
答案 0 :(得分:5)
您可以使用auto
:
auto c = a * b;
或decltype
:
decltype(a * b);
如果您没有T
和S
的实例,则可以使用std::declval
:
decltype(std::declval<T>() * std::declval<S>());