我写了一个模板类,它应该适用于 double 和 std::complex。正如假设的那样,我所有的方法都在 .hpp 文件中。除了一个。我必须专门研究一种方法,因为在某些地方我必须计算 double 的平方或 std::complex 的范数。对于“双重专业化”(A)更明确:
double a(2.0);
double b(0.0);
b = a*a;
对于“复杂的专业化”(B):
std::complex<double> a(2.0,3.0);
double b(0.0);
b = std::norm(a);
我的问题是:
有没有办法通过使用适用于 double 和 complex 的函数来避免这些专业化?(因为 std::norm 仅适用于复杂......)
或者唯一的解决方案是将特化 (A) 的双 a 转换为复合体,然后仅使用特化 (B) 作为通用模板(适用于双精度和复数)?