std::make_shared 是否执行值初始化(GCC 和 clang 不同意)?

2024-01-02

我的意思可以用下面的例子来解释:

auto p = std::make_shared<int>();

Is the int变量默认初始化(因此具有垃圾值)或值初始化(因此具有零值)?我已经在 GCC 5.2 和 clang 3.6 上进行了测试,前者进行值初始化,后者进行默认初始化。我想知道标准对此有何规定?在我看来,现代 C++ 在这种情况下绝对应该执行值初始化。


Yes.

N3797 20.8.2.2.6

为 T 类型的对象分配合适的内存并构造一个 通过放置 new 表达式在该内存中对象::new (pv) T(std::forward<Args>(args)...)

所以,这里将

::new (pv) int();

依此类推 N3797 8.5.1

表单中发生的初始化

T x(a);
T x{a};

以及在 new 表达式 (5.3.4) 中称为直接初始化。

初始化器的语义如下。目标类型是 正在初始化的对象或引用的类型和源 type 是初始化表达式的类型。如果初始化器是 不是单个(可能带括号)表达式,源类型是 没有定义的。

— 如果初始化器是(),该对象已被值初始化。

对类型的对象进行值初始化T means:

— 否则,该对象将被零初始化。

new clang 和 GCC 都同意该标准:Live http://melpon.org/wandbox/permlink/Q7vctUOjyZPCV8S4

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

std::make_shared 是否执行值初始化(GCC 和 clang 不同意)? 的相关文章

随机推荐

  • Node.js 并发

    我是 Node js 的新手 我正在测试 socket io 的实时消息传递 我喜欢它并且想使用它 我有个问题 Node js 服务器可以运行多少并发 我们的程序大概会有100个并发 所以 我对此很担心 我发现了另一个实时消息服务器 APE
  • 从 Spring Web MVC 控制器返回带有查询参数的视图字符串?

    这是我想要的效果 但我无法弄清楚语法 RequestMapping method RequestMethod GET params param1 param2 produces text html public String createF
  • 错误 1111 (HY000):组功能使用无效

    给定一个具有以下属性的人员表 ec 姓名 代码 出生日期 工资 列出收入高于平均工资的员工 我的解决方案 select from staff where salary gt avg salary 这有什么问题吗 聚合可能不会出现在WHERE
  • 我可以从正则表达式创建列表吗?

    我正在制作一个爬虫 用户可以指定正则表达式字符串来下载数据 当用户输入表单为 http xxx abc x z image 9 10 11 png 我想下载这些 http xxx abcx image9 png http xxx abcy
  • CocoaPods 安装/搜索 pod 时出错

    我正在尝试在我的项目中使用一些 Pod 但终端结果是 pod install Analyzing dependencies Unable to find a specification for Mantle 因此 我尝试搜索该 Pod 或其
  • React Native:未找到哈希字符串“android-28”的目标

    当尝试从命令行构建 React Native android 应用程序时 我遇到了以下问题 它位于 Ubuntu Server 上 因此没有 Android Studio GUI 我有android 28安装在错误指出的文件夹中 ANDRO
  • 未初始化的常量 Active Scaffold Rails 2.3.5

    我将 Rails 应用程序从 2 0 2 更新到 2 3 5 我使用主动支架作为管理部分 我没有更改代码 但更新出现了问题 我有一个控制器 admin user controller 来管理用户 这是控制器的代码 class Admin U
  • XML 文件的长度

    我有一个大小为 31 GB 的 XML 文件 我需要找到该文件中的总行数 我知道命令wc l会给我同样的 但是执行此操作花费的时间太长 有没有更快的机制来查找大文件中的行数 31 gigs 是一个非常大的文本文件 我打赌它会压缩到大约 1
  • 输入数字字段时移动浏览器上“输入/下一个”键的行为

    我这里有一行代码 不涉及表单
  • 如何在 OpenOffice 中进行简单的邮件合并

    我需要使用 C VBScript VB Net 或 C 通过 OLE 或本机 API 在 OpenOffice 中进行简单的邮件合并 有什么好的例子吗 我还没有想出一个令我非常满意的解决方案 但这里有一些注意事项 问 什么是用于邮件合并的
  • 将列表转换为 Pandas Dataframe 列

    我需要将列表转换为单列 pandas 数据框 当前列表 len 3 Thanks You Its fine no problem Are you sure 所需的 Pandas DF 形状 3 0 Thank You 1 Its fine
  • statsmodels ARIMA 结果与原始数据的比较

    我有一个包含季节性成分的时间序列 我安装了 statsmodels ARIMA model tsa arima model ARIMA data 8 1 0 fit 例如 现在 我了解到 ARIMA 与我的数据存在差异 我如何比较结果 pr
  • 从 git 命令获取 JSON,例如 git status

    如果我运行这个命令 git status I get On branch master Your branch is up to date with origin master nothing to commit working direc
  • WPF绑定以更改椭圆的填充颜色

    如何以编程方式更改 XAML 中基于变量定义的椭圆的颜色 我读到的关于绑定的所有内容都是基于集合和列表 我不能根据字符串变量的值简单地 字面意思 设置它吗 字符串颜色 红色 颜色 FF0000 值得指出的是 其他帖子引用的转换器已经存在 这
  • 如何调试类型级程序

    我正在尝试进行一些类型级别的编程 但它不起作用 我正在绞尽脑汁地试图弄清楚为什么 GHC 完全无法推断出我想要的类型签名 有什么方法可以制作GHC吗tell me它在做什么 I tried ddump tc 它只打印出最终的类型签名 是的
  • MySQL GROUP BY 和填充空行

    我确信之前已经回答过这个问题 但我找不到我需要的详细信息 对于分析系统 我需要能够对行进行分组并将它们返回到图表上 或者按minute 小时 日 月或年 我的工作正常 下面的示例代码 SELECT COUNT DISTINCT user i
  • .htaccess 首先检查 cookie,然后检查有效用户

    我的 apache 服务器上的目录有一个 htaccess 文件 目前 这使用 mod auth mysql 进行用户验证以查看目录列表 但是 如果用户已经登录到我的应用程序 因此存在 cookie 我想跳过有效用户要求 从而消除多次登录
  • ASP.NET MVC 4 RC Web API 参数绑定问题

    我在 ASP NET MVC 4 RC Web API 中遇到了一个奇怪的绑定问题 我有一种方法旨在接受客户端的发布请求 问题是 当调用 post 方法时 没有任何参数绑定 我到达了抛出行上的断点 并且名称 电子邮件均为空 如果我在 Jav
  • 使用 jQuery + ERB 在视图中获取 6:Fixnum (Rails) 的未定义方法“gsub”?

    我正在尝试将一些 jQuery ERB 添加到特定视图 views posts show html erb 文件顶部 h2 posts show h2 etc div class div
  • std::make_shared 是否执行值初始化(GCC 和 clang 不同意)?

    我的意思可以用下面的例子来解释 auto p std make shared