初始化器列表返回的生命周期扩展

2023-11-22

所以我有一个 lambda,其返回类型是auto我在阵列支持方面遇到问题initializer_list在这里被摧毁:

const auto foo = [](const auto& a, const auto& b, const auto& c) { return {a, b, c}; };

我将像这样使用 lambda:

auto bar = foo(1, 2, 3);

for(const auto& i : bar) cout << i << endl;

我正在做的工作将所有 lambda 都是单个语句作为其编码标准的一部分(请随意表达您的愤怒。)我认为我可以通过以下方式解决这个问题:

  1. Giving foo返回类型为vector int,但这破坏了它的通用性:const auto foo = [](const auto& a, const auto& b, const auto& c) -> vector<int> { return {a, b, c}; }
  2. 只需编写一个模板化函数来构造一个vector<T>并返回它:template <typename T> vector<T> foo(const T& a, const T& b, const T& c){ return {a, b, c}; }

是否有可能将这些变量强制放入一个容器中,其支持不会在一行中全部销毁,以便我可以将 lambda 保留为auto返回类型?


库基础知识 TS v2 有std::experimental::make_array,这肯定会满足您的要求:

#include <experimental/array>
const auto foo = [](const auto& a, const auto& b, const auto& c) {
    return std::experimental::make_array(a, b, c); };

更普遍,构造函数的模板参数推导将允许你写:

const auto foo = [](const auto& a, const auto& b, const auto& c) {
    return std::vector{a, b, c}; };
                      ^-- no template parameter required

今天,您可以使用以下方法来模拟这一点common_type:

const auto foo = [](const auto& a, const auto& b, const auto& c) {
    return std::vector<std::common_type_t<decltype(a), decltype(b), decltype(c)>>{a, b, c}; };
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化器列表返回的生命周期扩展 的相关文章

随机推荐

  • python scipy.stats.powerlaw 负指数

    我想为 scipy stats powerlaw 例程提供一个负指数 例如a 1 5 为了抽取随机样本 powerlaw pdf x a a x a 1 from scipy stats import powerlaw R powerlaw
  • Matlab实时绘图

    我是 matlab 新手 我想实时绘制一些数据 我的方法如下 figure hold on for i 1 1000 plot i i drawnow end 但其性能较差 我还在 stackoverflow 上找到了一个建议 https
  • 我可以在canvas元素中绘制表格吗?

    有没有什么方法 插件 工作解决方案等 来绘制HTML table into a
  • 使用 Objective-C 对字符串进行 URLEncoding

    我正在尝试对字符串进行 URL 编码以形成来自 Objective C 的 GET 请求 NSString params Decoded data foo bar baz NSRunAlertPanel Error params urlEn
  • 什么是应用程序加载器中的托管内容包?

    我想为我的应用程序启用应用程序内购买 购买类型是非消耗品我用 Apple 标记了主机内容 当我想通过 Apple 托管内容时 我需要提供托管内容包 我无法找到此内容包中应包含哪些内容的更多信息 但它不能大于 2GB 并且扩展名应该是 pkg
  • Java中字符串到二进制输出

    我想从字符串中获取二进制 011001 但我得到了 B addbf1 必须有一个简单的转换来做到这一点 但我没有看到它 public static String toBin String info byte infoBin null try
  • 可以在同一台机器上安装两个不同版本的Android Studio吗?

    我只有一台机器 Mac OS 10 9 5 我目前拥有 Android Studio 的金丝雀版本 但遇到了一些错误 所以我也想安装稳定版的Android Studio 有人这样做过吗 在同一台机器上安装多个版本是否有问题 是的 但您必须更
  • 如何为 binned_statistic 制作用户定义的函数

    我正在使用 scipy stats 包沿轴进行统计 但我在使用百分位统计时遇到问题binned statistic 我概括了下面的代码 我尝试在一系列 x bin 中获取具有 x y 值的数据集的第 10 个百分位数 但它失败了 我当然可以
  • Java 7 Update 25 的 rmi 线程中的 AppContext 为 null

    我们最近从 Update 21 更新到 Java 7 Update 25 并且现在在从 rmi 线程调用 SwingUtilities isEventDispatchThread 时遇到空指针异常 因为 AppContext getAppC
  • 7 段显示 OCR

    我正在使用 Tesseract 一个 OCR 库 构建一个 iOS 应用程序 拍照并在其上运行 OCR 并且它可以很好地处理书写良好的数字和字符 使用常用字体 我遇到的问题是 如果我在 7 段显示器上尝试 它会给出非常非常糟糕的结果 所以我
  • zend 文本元素中的占位符文本

    我正在开发一个 Zend 表单应用程序 其中我的表单包含带有水印的文本框 我们可以通过以下代码在 HTML 中实现这一点
  • 如何在wpf文本块中显示一行文本

    我是 wpf 的新手 我想在 wpf 文本块中的一行中显示文本 例如
  • .net 的替代 Oracle 驱动程序

    我必须用 C 开发一个工具来从 Oracle DB 检索一些数据 由于我们的 IT 支持人员在安装 Oracle 客户端时遇到了一些问题 因此我希望能够在不安装客户端的情况下连接到数据库 这个想法是只安装 也许注册 一个额外的库与应用程序一
  • 如何在 TypeORM 中查询数组

    我想创建用户权限管理 我将 TypeORM 与 PostgreSQL 结合使用 这是用户实体内权限的列定义 Column type text array true permissions UserPermission 这是UserPermi
  • 从 Bash 中的文件中读取行并将单词解析为 mailx 参数的变量

    我有一个 bash 脚本 它从 4 列 无标题 的文本文件中读取行 行数最多可以为 4 行或更少 每行中的单词由空格字符分隔 email protected email protected email protected Sub1 Mail
  • PyCharm IPython 控制台中的嵌入式图表

    有没有办法允许在 PyCharm 中激活的 IPython 控制台中嵌入 Matplotlib 图表 我正在寻找与 IPython 的 QT 控制台版本可以完成的类似行为 即ipython qtconsole matplotlib inli
  • 将自定义 HTML Helper 添加到 MVC 项目

    我一直在浏览网页 试图找到一个很好的示例 教程 详细说明如何为我的 MVC 3 Razor 应用程序创建和使用我自己的自定义 HTML 帮助程序 我发现了这个示例 教程 如下所示 在 ASP NET MVC 3 中添加您自己的 HtmlHe
  • 哪些 SDK 可用于创建 iPad/iPhone 离线地图应用程序?

    我们正在使用 Cloudmade SDK 开发适用于 iPad 的离线城市地图应用程序 我很好奇 是否还有其他可用于离线应用程序的 SDK 对我来说更好的解决方案是 1 生成您自己的地图TileMill从 Mapbox 导出 然后导出为 M
  • 在 Angular 6 项目中使用 jquery 库好吗?

    我正在创建一个 Angular 6 项目 该项目之前使用 jquery 开发 现在我陷入困境 好像在 Angular 6 中使用 jquery 很好 或者我应该删除所有 jquery 代码并将其替换为 Angular 不 这不是一个好主意
  • 初始化器列表返回的生命周期扩展

    所以我有一个 lambda 其返回类型是auto我在阵列支持方面遇到问题initializer list在这里被摧毁 const auto foo const auto a const auto b const auto c return