【发布时间】:2020-08-08 22:18:18
【问题描述】:
TL;DR 假设我有一个带有模板参数 T 的函数,它接受 std::vector<T>& 作为输入(见下文),如果 T是一个复杂的类型。我该怎么做?
我的尝试在https://stackoverflow.com/a/30737105/5913047之后,我知道我可以检查一个类型是否复杂
template<class T> struct is_complex : std::false_type {};
template<class T> struct is_complex<std::complex<T>> : std::true_type {};
所以我尝试了:
template<typename T>
void MyFunction(std::vector<T>& MyVector){
// do something
if (is_complex<T>()){
std::transform(MyVector.begin(), MyVector.end(), MyVector.begin(),[](T&c){return std::conj(c););
}
}
但是,如果我将此函数用于非复杂类型,编译器会说conj 没有为非复杂类型定义。有什么设计可以做我想做的吗?
【问题讨论】:
标签: c++ c++11 complex-numbers