我想定义可只适用于各类模板函数的支持乘法,例如int,long,float,和自定义类型的重载运营商如Martix:
class Matrix {
public:
Matrix operator*(const Matrix& other) const;
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过这种方式限制模板类型?
template <typename T, typename = std::enable_if_t< /* multiplication is defined */ >>
T power (T base, unsigned int exponent) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果只需要测试,如果类型可以自身相乘,则可以使用:
template <class T,
class = decltype(std::declval<T>() * std::declval<T>())>
T power (T base, unsigned int exponent) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |