无法将整数添加到标准::复杂<double>
Cannot add integer to std::complex<double>
我试图将整数添加到complex<double>
,但我不能。以下是代码的相关部分:
using dcomplex = std::complex<double>;
dcomplex j = dcomplex(0,1);
// dcomplex r = 1+j;//this line is not compiling
dcomplex r = 1.0+j;//ok
我理解为什么j+=1
没有编译,因为operator+=
在complex
内部重载,并且没有隐式转换int->double
。然而,operator+
在复杂的内部没有过载(我没有在那里找到它)。所以它在其他地方超载了(在哪里?我找不到它),因为int
应该隐式地转换为double
。但事实并非如此。为什么?
来自cppreference的std::complex::operator+
的重载为
template< class T >
complex<T> operator+( const complex<T>& lhs, const complex<T>& rhs);
template< class T >
complex<T> operator+( const complex<T>& lhs, const T& rhs);
template< class T >
complex<T> operator+( const T& lhs, const complex<T>& rhs);
当类型推导发生时,会出现冲突,因为它将T
求值为double
和int
。因为T
不能同时存在,所以会产生错误
这是一个非成员函数,因为标量在左边。(http://en.cppreference.com/w/cpp/numeric/complex/operator_arith3)。可以将整型转换为double或j.value_type
。
相关文章:
- 函数复杂度分析
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- while循环中while循环的时间复杂度是多少
- EASTL矢量<向量<int>>连续的
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 函数的时间复杂度是多少?
- 如何检查两个 std::向量在小于 O(n) 的时间复杂度内是否相等
- 使用 Python Extension API 包装复杂C++类
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何计算此排序函数的时间复杂度?
- 计算两个代码块的时间复杂度
- 将平面阵列重塑为复杂的特征类型
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在复杂继承中访问静态成员变量
- C++ 中具有 O(1) 搜索时间复杂度的数据结构
- OpenCV 傅里叶变换复杂输出问题
- 具有嵌套 if-else 的循环的时间复杂度
- 在 for 循环中处理复杂的发送 recv 消息
- C++:如何用单个命令替换复杂的迭代?