在 C++ 中添加双精度数和复数

2024-01-01

考虑一下这段代码:

#include <iostream>
#include <complex>

int main()
{
  std::complex<double> z1 = 5;
  std::cout << z1 - 1 << "\n";  // must change to z1 - 1.0 to compile

  std::complex<int> z2 = 5;
  std::cout << z2 - 1.0 << "\n";  // must change to z2 - 1 to compile
}

这会产生编译错误,因为没有operator-找到表达式中的类型z1 - 1 or z2 - 1.0。另一方面,更改这些表达式以使基本类型匹配可以正常工作。

天真地,为了z1 - 1我希望int1 晋升为double,并期望z2,带基本类型int, in z2 - 1.0晋升为complex<double>。这是怎么回事?


The operator- http://en.cppreference.com/w/cpp/numeric/complex/operator_arith3您尝试调用的是具有单个类型模板参数的函数模板。

template< class T >
complex<T> operator-( const complex<T>& lhs, const T& rhs);

两个函数参数中的模板参数都不会出现在非推导上下文中,因此分别对两个参数执行模板参数推导,这会导致T for lhs被推导为double,而对于rhs推导为int.

由于推导类型之间的不匹配,模板参数推导失败,并且您的代码无法编译。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C++ 中添加双精度数和复数 的相关文章

随机推荐

  • Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

    我已经下载了 Qt 4 8 2 库 Qt Creator 2 5 2 并使用 w32api 版本 3 13 和 GCC g 版本 4 7 0 1 手动安装了 MingW 我的操作系统是 Windows 7 Ultimate x64 我可以在
  • 在表达式主体属性中调用新的 RelayCommand (ICommand) 是否安全

    通过表达式主体属性 我们可以创建一个RelayCommand如下 public RelayCommand Command gt command command new RelayCommand CommandExecute 然而这也是可能的
  • 如何在预定时间运行 PHP 脚本

    我需要每天在预定时间运行 php 脚本来更新数据库中的一些字段并发送自动电子邮件 我怎样才能做到这一点 是否可以在 XAMP 服务器中编写一些服务以每天在预定时间运行脚本 我不知道如何更新数据库并在预定时间自动发送电子邮件 任何人都可以分享
  • gayi 未定义 - Google 登录问题与gapi.auth2.init

    我正在尝试实施 Google Sign In 并检索用户的个人资料信息 错误是 Uncaught ReferenceError gapi未定义 这是为什么
  • KnockoutJS 选择选项和选定值

    类似的问题如 选择元素的初始值 https stackoverflow com questions 7516089 knockoutjs select initial value 我在设置选择元素的初始值时遇到问题 我基本上有一个从服务器传
  • 为什么我们在使用 JSF Web 应用程序时需要 beans.xml?

    在学习了一段时间 JSP 和 Servlet 之后 我开始使用 JSF 进行 Web 开发 当您创建 JSF Web 应用程序时 您总是 可能经常 但我不确定是否总是 必须创建 beans xml 并且您不需要在其中编写任何内容 但是 如果
  • php 文件上传错误 1 ​​- 使用 php_ini 的正确方法是什么?

    我在将 pdf 上传到服务器时遇到问题 upload max filesize 为 2M 文件大于此值 约为 4M 我在这里发现了一个与我的问题类似的帖子 即使 upload max size 大于文件大小 FILE 上传大文件也会出现错误
  • 如何远程关闭 Java RMI 服务器

    我有一个非常简单的 Java RMI 服务器 如下所示 import java rmi import java rmi server public class CalculatorImpl extends UnicastRemoteObje
  • C++ 算术提升标头的用途

    我一直在使用一组模板来确定 C 中给定两种基本类型的正确提升类型 这个想法是 如果您定义自定义数字模板 您可以使用它们来确定返回类型 例如基于传递给模板的类的operator 函数 例如 Custom numeric class templ
  • 如何创建多维数组?

    我想创建具有级别 组和项目的多维数组 为什么不创建自定义对象的数组 class A int t int b List a test new ArrayList a test add new A a a
  • 理解 phpcurl_multi_exec

    我试图理解curl multi exec 我在这里复制了一部分手动示例 所以我想知道它是如何工作的 我猜第一个循环发送http请求 但随后是一个循环内的循环 使用带有看似未记录的标志的函数 我想并行下载 70 个网址 http www ph
  • 何时使用函数式 setState

    在过去的几天里 我一直在学习 React 查看了一些关于编写不同元素的不同方式的教程和解释 不过 有一个我一直很好奇的 setState更新 覆盖函数state组件的属性 例如 假设我有一个包含以下内容的课程 class Photos ex
  • RxJs switchMap 与 Angular HttpClient

    我有一个用例 每当触发新请求时 任何已经在进行中的 http 请求都应该被取消 忽略 For eg 当请求 1 响应时间太长 网络连接速度变慢时 会出现请求 例如 2 在这种情况下 2 从服务器获得非常快的响应 即使 1 返回 HTTP 响
  • 如何以 REST方式返回随机项?

    我的设计公开了两种资源 Images Tags 我希望客户能够通过他们的标签请求随机图像 例如 给我标记有 纽约 和 冬天 的随机图像 在这种情况下 RESTful 设计会是什么样子 为了总结评论中的所有讨论 并且不改变我最初的建议 这就是
  • php静态方法问题

    这两段代码有什么区别 class something static function doit echo hello world something doit 和相同但没有 static 关键字 class something functi
  • 如何设置网格视图列的高度?

    我是flutter新手 没有太多经验 我正在尝试使用 flutter 开发一个 android 应用程序 这是我以前的应用程序设计 我还能够成功地在颤动中制作网格视图 但列高是问题所在 他们中的任何人都可以帮助我解决我的颤振代码吗 clas
  • Hadoop 2.4.1 和适用于 Hadoop 的 Google Cloud Storage 连接器

    我正在尝试使用 Google 的 Cloud Storage Connector for Hadoop 在 Hadoop 上运行 Oryx https cloud google com hadoop google cloud storage
  • 如何通过jquery隐藏没有id/class的div?

    如何使用 jQuery 隐藏第一个 第二个 div Div 无法获取 id class div p ssssssss p div div p ttttttttt gt p div div p fffff p div 隐藏第一个 div 元素
  • Form1_KeyDown 不起作用

    private void Form1 KeyDown object sender KeyEventArgs e if listBox1 Items Contains e KeyCode listBox1 Items Remove e Key
  • 在 C++ 中添加双精度数和复数

    考虑一下这段代码 include