结构化绑定,参考 ?是否可以删除它们

2024-01-14

假设我有这样一个元组。

std::tuple<int &, int> tuple{};

我想做这样的事情:

auto [i1, i2] = tuple; // Here i1 is lvalue reference, i2 is int

i1 是左值引用,因为元组上的第一个值是一个左值引用。 然而我并没有写auto &[i1, i2]。那么,在这种情况下是否有可能“删除”引用呢?这样我就得到了 i1 和 i2 作为“简单”int。 谢谢 !


这种结构化绑定相当于:

auto e = tuple;  
auto&& i1 = e.get<1>();
auto&& i2 = e.get<2>();

Since tuple有类型std::tuple<int&, int>,这也是类型e.

结构化绑定语法没有从内部删除引用的功能。tuple。但是你可以创建一个辅助函数来做到这一点就像这个问题一样 https://stackoverflow.com/questions/12742877/remove-reference-from-stdtuple-members。这是一个工作示例:

#include <tuple>
#include <iostream>

template <typename... T>
using tuple_with_removed_refs = std::tuple<typename std::remove_reference<T>::type...>;

template <typename... T>
tuple_with_removed_refs<T...> remove_ref_from_tuple_members(std::tuple<T...> const& t) {
    return tuple_with_removed_refs<T...> { t };
}

int main()
{
    int x{5}, y{6};

    std::tuple<int& , int> t(x, y);

    auto [i1, i2] = remove_ref_from_tuple_members(t);

    std::cout << i1 << ' ' << i2 << '\n';
    i1 = 7; i2 = 8;
    std::cout << x << ' ' << y << '\n';
}

Output:

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

结构化绑定,参考 ?是否可以删除它们 的相关文章

随机推荐

  • 计算两个矩形之间的重叠面积

    我想计算红色和蓝色矩形之间的重叠区域 灰色区域 每个矩形由其四个角坐标定义 重叠面积的结果单位是单位正方形 我无法想象我该怎么做 任何有创意的评论将不胜感激 这种类型的交集很容易通过 最大值的最小值 和 最小值的最大值 的想法来完成 为了将
  • 将 byte[] 转换为数据 URI 的 Base64 字符串

    我知道这个问题可能已经被问过 10000 次了 但是 我似乎找不到这个问题的直接答案 我的数据库中存储了一个代表图像的 LOB 我从数据库获取该图像 我想通过 HTML IMG 标签将其显示在网页上 这不是我的首选解决方案 但在我找到更好的
  • 如何为具有动态应用程序 ID 的应用程序指定外部路径

    我在我的应用程序中使用 FileProvider 当我从应用程序中拍摄照片时存储在那里 我的应用程序也有一个不同的应用程序 ID 用于调试和发布版本 com rkmax myapp com rkmax myapp debug 我已经像这样定
  • @SpringBootTest 干扰 EclipseLink 动态编织

    我的公司正在使用 Spring Boot Spring MVC JPA 以及 EclipseLink 和动态编织来开发 Web 应用程序 我的任务是准备 UI 的实现和集成测试 使用 JUnit 和 SpringBootTest 启动应用程
  • 为什么 TimeZone.getTimeZone("MST") 方法与 getTimeZone("US/Mountain") 不同?

    TimeZone getTimeZone US Mountain and TimeZone getTimeZone MST 返回不同的结果 这个java类中的MST不代表 山区标准时间 吗 您不应使用简短的三个字母名称 MST 在Java中
  • 如何让 KendoUI Validator 忽略隐藏的表单元素?

    我正在尝试将 KendoUI Validator 与 ASP NET WebForms 项目一起使用 我有一个简单的页面 有许多输入 当然 ASP NET 也添加了一些隐藏的表单元素 我有以下问题 为什么 KendoUI 验证器不忽略隐藏的
  • 实现 JTree 工具提示的最佳方法?

    由于 JTree 和 TreeModel 不直接提供开箱即用的工具提示 您认为为 JTree 提供特定于项目的工具提示的最佳方式是什么 编辑 之后回答我自己的问题 Zarkonnen 感谢 getTooltipText 的想法 我发现了另一
  • C# 5.0 EBNF 语法

    我正在寻找 5 0 版编程语言 C 的 EBNF 语法 这个语法应该是机器可读的 所以我可以用这个 EBNF 语法做一些处理 直到现在我才发现Visual Studio的安装中包含了C 的语言规范文档 PROGRAMFILES x86 Mi
  • 是否可以将 Zeppelin 笔记与 git 集成?

    是否可以将 Zeppelin 笔记与 git 集成 人们可以设置存储库位置 但如何将其设置为远程 git 存储库 不过 此功能可在 Amazon EMR 上使用 是的 这是可能的 我使用以下方式 创建一个 github 存储库并推送所有笔记
  • HighCharts:如何将自定义颜色与渐变相结合

    一段时间以来 我正在玩饼图的着色 或者我得到了没有渐变的自定义颜色 或者带有渐变的默认颜色 我的颜色存储在 php 字段中 我想像这样加载colors 我的代码的实际状态是这样的 它显示带渐变的默认颜色 colors Highcharts
  • 通过 FCM 消息控制台在后台向我的 iOS 应用程序发送静默通知

    我想向我的 iOS 应用程序发送静默通知 为此我已在其中实现了 FCM 当应用程序在后台运行时 当应用程序从 FCM 收到通知时 我需要执行一些操作 为此 执行过程将进入调用的方法 void application UIApplicatio
  • 仅获取容器中 Azure blob 文件的所有名称?

    我想要容器中 Azure Blob 文件中的所有名称 出于某种目的 我发现了一些类似的问题 甚至在 stackoverflow com 上也发现了一个 获取容器中 Azure blob 文件的名称列表 https stackoverflow
  • 评估 ansible 条件中的返回码

    我正在致力于自动化一项需要将 最新版本的软件附加到文件的任务 我不希望它对同一版本多次执行此操作 它查看以下示例文件 var software releases new Array 4 3 0 4 4 0 4 5 0 4 7 0 4 8 0
  • 从数据表中读取值

    我有一个填充有 samo 数据 值的 DataTable 我想从 DataTable 读取数据并将其传递给字符串变量 我有这个代码 DataTable dr art line 2 ds Tables QuantityInIssueUnit
  • 对数字列表求和比使用 for 循环更快的方法?

    有没有一种方法可以比使用 for 循环更快地对数字列表进行求和 也许在 Python 库中 或者这真的只有多线程 矢量处理才能有效地完成吗 编辑 为了澄清 它可以是任何数字的列表 未排序 只是用户输入的 您可以使用 sum 对数组的值求和
  • CSS3 旋转 - Firefox 和 Safari 中的渲染问题

    我正在尝试使用 CSS3 属性 旋转 将简单的文本行旋转一定角度 精确1 5度 webkit transform rotate 1 5deg moz transform rotate 1 5deg ms transform rotate 1
  • Node-phantom 显示生成的 pdf 页数

    我在获取 phantomjs 中生成的 pdf 页数时遇到问题 基本上我将 phantomjs 与 nodejs 一起使用 我想在第 5 页中显示总页数 function generatePdf Load ejs template fs r
  • 将 List 转换为 List 的最快方法

    获取基元列表并将其转换为可为空的基元列表的最快方法是什么 例如 List
  • 为什么在 Lua 中使用 do-end 块?

    我一直试图寻找这个问题的答案 但未能成功 我想知道 do end 块实际上是用来做什么的 它只是说在我的书中需要时使用值 那么我该如何使用它呢 我是否可以通过将函数放置在 do end 循环中并将局部变量放置在函数外部但在此 do end
  • 结构化绑定,参考 ?是否可以删除它们

    假设我有这样一个元组 std tuple