为什么 as_const 禁止右值参数?

2024-02-01

我想问为什么as_const禁止右值参数,根据 http://en.cppreference.com/w/cpp/utility/as_constcppreference.com(即为什么标准人员这样做,而不是为什么 cppreference.com 专门引用了他们。而且也没有在规范中编纂委员会的意图,只是为了确保:)))。这个(人为的)示例会产生错误(用户希望将其设置为 const 以保持 COW 安静)

QChar c = as_const(getQString())[0];

另一个问题的回答 https://stackoverflow.com/a/34566125/1848654注意到如果我们just删除右值引用重载的删除,它会默默地将右值转换为左值。是的,但为什么不优雅地处理右值并为右值输入返回 const 右值,为左值输入返回 const 左值?


问题是如何延长生命周期

const auto& s = as_const(getQString()); // Create dangling pointer
QChar c = s[0]; // UB :-/

一种可能性是以下重载(而不是删除的重载)

template< typename T >
const T as_const(T&& t) noexcept(noexcept(T(std::forward<T>(t))))
{
    return std::forward<T>(t);
}

这涉及额外的建设,也许还有其他陷阱。

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

为什么 as_const 禁止右值参数? 的相关文章

  • 为什么使用abs()或fabs()而不是条件否定?

    在 C C 中 为什么要使用abs or fabs 不使用以下代码即可查找变量的绝对值 int absoluteValue value lt 0 value value 这与较低级别的指令较少有关吗 您提出的 有条件的abs 并不等于std
  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 我应该在应用程序退出之前运行 Dispose 吗?

    我应该在应用程序退出之前运行 Dispose 吗 例如 我创建了许多对象 其中一些对象具有事件订阅 var myObject new MyClass myObject OnEvent OnEventHandle 例如 在我的工作中 我应该使
  • 热重载时调用方法

    我正在使用 Visual Studio 2022 和 C 制作游戏 我想知道当您热重新加载应用程序 当它正在运行时 时是否可以触发一些代码 我基本上有 2 个名为 UnloadLevel 和 LoadLevel 的方法 我想在热重载时执行它
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 如何在 SwiftUI AttributedString 中渲染 Markdown 标题?

    我一直在尝试使用新的属性字符串 https developer apple com documentation foundation attributedstring随 iOS 15 一起发布 用于渲染存储在变量中的 Markdown 但是
  • 在 MVC 中使用 dotnet core 时如何删除 ErrorViewModel

    如果 ErrorViewModel 从我的项目中删除 它将无法运行 失败于app UseMvc 出现错误 System TypeLoadException 无法加载类型 程序集 DocumentGenerationService 版本 1
  • SED 更改标签之间的值

    我在 UNIX 上有这样的日志文件 start host1 java serv host1 def java es dev L2 1 dev w fr host1 def java es dev L3 0 dev w fr host1 de
  • 扫描线算法 - 一维平面的实现

    问题很简单 平面上有一些给定的一维线 我们需要找到至少有一行的空间的总大小 让我用一个示例图像来讨论这个问题 这可能是一个案例 Or 这可能是一个案例或类似的东西 我知道这是一个基本问题扫线算法 https en wikipedia org
  • 全屏显示时 Flex 中的文本输入字段不起作用

    大家好 我有一个问题 如果我的应用程序是全屏的 我无法单击任何文本输入组件 也无法在字段中输入任何文本 我尝试过在运行时创建文本输入字段 并且尝试在 Flex 构建器的 GUI 设计窗口上时在画布上创建它们 然而 它们都给出相同的结果 并且
  • 将 IO Int 转换为 Int

    我通过转换创建了一个组合框xmlWidget to a comboBox与功能castTocomboBox现在我想获取活动项目的文本或索引 问题是如果我使用comboBoxGetActive它返回一个函数IO Int结果 我需要知道如何获得
  • ASP.NET MVC 将 null 转换为零长度字符串

    我正在使用 MVC 3 并尝试将留空的字段作为零长度字符串而不是空值发送到数据库 这可能与数据注释属性有关吗 如果不是 从空值转换的最合适的位置是什么 是在模型验证期间吗 虽然不理想 但这是我所知道的最好的方法 DisplayFormat
  • 找出超速时间段?

    我脑海中浮现出一些有趣的事情 假设我们有一个表 在 SQL Server 中 如下所示 Location Velocity Time 例如 Location Velocity Time 1 40 1 20 2 35 2 00 3 45 2
  • 获取特定键的所有值

    我在 mongoDB 中有一个数据 我想检索一个键的所有值 category 使用Python代码 我尝试了几种方法 但在每种情况下我都必须给出要检索的 值 任何建议 将不胜感激 id my id1 tags tag1 tag2 tag3
  • Keras 构建 9 维特征向量网络

    我有以下简单的数据集 它由 9 个特征组成 是一个二元分类问题 特征向量的示例如下所示 每行都有其对应的 0 1 标签 30 82 1 2 73 172 117 2 2 655 94 30 174 1 5 8 256 189 3 2 587
  • PHP:将数字四舍五入为 16 位小数

    嗨 我正在尝试将数字四舍五入16位小数但它只显示并且不会四舍五入直到14位小数 这是我的尝试 OUTPUT 0 16346153846154 预期输出 0 1634615384615385 我知道float只有 14 位十进制数字 还有其他
  • Windows 7 将 CTRL + j 映射到向下箭头键

    I have been searching for months for a way to map a key combination CTRL something to a directional key like down or up
  • QBOv3 XML 验证错误

    我正在尝试在批量请求中一起发送几个 Quickbooks 查询 我遵循了 Intuit 在这里提供的格式https developer intuit com docs 0025 quickbooksapi 0050 data service
  • 在内核调试模式下连接到目标机器时无法中断

    我正在启动一个包含 Windows 微过滤器的原型 我已经设置好了我的环境 目标虚拟机 实际上是 3 个 Windows 7 8 和 8 1 主机开发计算机 托管 Visual Studio 2013 和 HyperV VM 我终于设法将测
  • 设置特定配置文件时不加载 Spring bean

    背景 因此 我有几个与外部系统接口的 bean 对于开发来说 模拟外部系统并用一些产生或多或少静态响应的实现替换接口 bean 是很方便的 所以我一直在做的是创建一个接口 真正的实现和一个存根实现 如下所示 public interface
  • Colorbox:显示/模拟内联内容的“加载”动画

    您好 我正在使用 ColorBox 我们使用 jquery 在表单中执行了几个步骤 并且我们希望在等待 ajax 回复时显示 ColorBox 的加载动画 我们如何使用它 提前谢谢您 我认为你想要的是 fastIframe thediv c
  • 如何使用 jQuery UI 滑块动态更新 highcharts

    我正在寻找一种根据 jQuery UI 滑块确定的值动态更新 Highcharts 的方法 我还不太熟悉 AJAX 或 JSON 所以我运气不太好 我试图让收入在给定的月份内逐步增加 例如订阅服务 为了方便起见 我把它放在 jsFiddle
  • 如何测试预处理器符号是否#define'd但没有值?

    使用 C 预处理器指令 是否可以测试预处理器符号是否已定义但没有值 像这样的东西 define MYVARIABLE if defined MYVARIABLE MYVARIABLE blablabla endif EDIT 我这样做的原因
  • 从子进程触发 root 方法时的上下文

    我有这个非常简单的测试视图
  • 为什么 as_const 禁止右值参数?

    我想问为什么as const禁止右值参数 根据 http en cppreference com w cpp utility as constcppreference com 即为什么标准人员这样做 而不是为什么 cppreference