通过使用指令调用开始和结束?

2024-01-31

既定的调用习惯用法swap is:

using std::swap
swap(foo, bar);

这边走,swap可以对外部的用户定义类型进行重载std命名空间。

我们应该调用begin and end以同样的方式?

using std::begin;
using std::end;
some_algorithm(begin(some_container), end(some_container));

或者我们应该这样写:

some_algorithm(std::begin(some_container), std::end(some_container));

Using a using-宣言IMO 就是这样。这也是标准对 for 循环范围所做的操作:如果没有begin or end出席的成员然后它会打电话begin(x) and end(x) with std作为关联的命名空间(即它会发现std::begin and std::end如果 ADL 未找到非会员begin and end).

如果你发现这样写using std::begin; using std::end;一直很乏味,那么你可以使用adl_begin and adl_end功能如下:

namespace aux {

using std::begin;
using std::end;

template<class T>
auto adl_begin(T&& x) -> decltype(begin(std::forward<T>(x)));

template<class T>
auto adl_end(T&& x) -> decltype(end(std::forward<T>(x)));

template<class T>
constexpr bool is_array()
{
    using type = typename std::remove_reference<T>::type;
    return std::is_array<type>::value;
}

} // namespace aux

template<class T,
         class = typename std::enable_if<!aux::is_array<T>()>::type>
auto adl_begin(T&& x) -> decltype(aux::adl_begin(std::forward<T>(x)))
{
    using std::begin;
    return begin(std::forward<T>(x));
}

template<class T,
         class = typename std::enable_if<!aux::is_array<T>()>::type>
auto adl_end(T&& x) -> decltype(aux::adl_end(std::forward<T>(x)))
{
    using std::end;
    return end(std::forward<T>(x));
}

template<typename T, std::size_t N>
T* adl_begin(T (&x)[N])
{
    return std::begin(x);
}

template<typename T, std::size_t N>
T* adl_end(T (&x)[N])
{
    return std::end(x);
}

这段代码非常可怕。希望在 C++14 中这可以变得不那么神秘:

template<typename T>
concept bool Not_array()
{
    using type = std::remove_reference_t<T>;
    return !std::is_array<type>::value;
}

decltype(auto) adl_begin(Not_array&& x)
{
    using std::begin;
    return begin(std::forward<Not_array>(x));
}

decltype(auto) adl_end(Not_array&& x)
{
    using std::end;
    return end(std::forward<Not_array>(x));
}

template<typename T, std::size_t N>
T* adl_begin(T (&x)[N])
{
    return std::begin(x);
}

template<typename T, std::size_t N>
T* adl_end(T (&x)[N])
{
    return std::end(x);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过使用指令调用开始和结束? 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 是否可以强制 XMLWriter 将元素写入单引号中?

    这是我的代码 var ptFirstName tboxFirstName Text writer WriteAttributeString first ptFirstName 请注意 即使我使用 ptFirstName 也会以双引号结束 p
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 将自定义元数据添加到 jpeg 文件

    我正在开发一个图像处理项目 C 我需要在处理完成后将自定义元数据写入 jpeg 文件 我怎样才能做到这一点 有没有可用的图书馆可以做到这一点 如果您正在谈论 EXIF 元数据 您可能需要查看exiv2 http www exiv2 org
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐

  • 使用 matplotlib.pcolormesh() 将颜色设置为透明的正确方法?

    我想要低于一定水平的值 在这种情况下0 绘制为透明matplotlib pcolormesh 而且我似乎无法使用我找到的选项进行任何操作 我尝试过设置kwarg vmin 1 我尝试设置限制plt cm cmap set under alp
  • 数据重塑的 R 性能

    我正在尝试在 R 中重塑数据框 但使用推荐的方法似乎有问题 数据帧具有以下结构 ID DATE1 DATE2 VALTYPE VALUE abcd1233 2009 11 12 2009 12 23 TYPE1 123 45 VALTYPE
  • 将 int 60 转换为 60 分钟的时间值

    这看起来应该很简单 但我找不到我需要的时间格式 数据库中的值为 240 这意味着 240 分钟 我如何将其存储在 php 变量中 以便 php 知道这是分钟 这样我就可以在脚本中将其添加到HH MM value 我编辑了下面的代码以反映答案
  • 如何在 nw.js 中开始使用 angular2

    如何在 nw js 下获得 Angular 2 的工作 hello world 我使用本指南成功获得了一个可用的 Angular 2 应用程序 https angular io docs js latest quickstart html
  • 如何强制状态服务器丢弃所有会话?

    我有一个 asp net Web 应用程序 它使用状态服务器来存储其会话 当我们更改存储在会话中的某些内容的类型时 所有具有活动会话的用户都会出错 因为 旧会话 包含 旧类型 的实例 我认为解决这个问题的最简单方法是重新启动状态服务器 从而
  • jQuery .on keyup 和模糊仅触发 onload

    问题 这blur and keyup每个事件在 onload 时触发一次 并且仅在 onload 时触发 我怎样才能让它们正常工作 jQuery function myFunction text alert text input1 on k
  • 根据特定数组的长度对变量进行分组

    我在数据集中有一长串变量 其中包含多个time不同采样率的通道 例如time 1 time 2 TIME Time等等 还有多个其他变量取决于这些时间中的任何一个 我想列出包含 时间 的所有可能通道 工作区中不区分大小写的部分字符串搜索 并
  • 为什么 savefig 和plot 命令必须位于 IPython 笔记本中的同一单元格中?

    我试图从 IPython 笔记本中导出一些图 搜索我发现这个问题 https stackoverflow com questions 13642528 how to export figures to files from ipython
  • 检测用户是否正在滚动

    如何在 javascript 中检测用户是否正在滚动 这有效 window onscroll function e called when the window is scrolled edit 你说这是一个 TimeInterval 中的
  • webpack-dev-server 如何在不刷新页面的情况下重新加载 css

    当我更改 vue 文件和 css 文件中的样式时 我不希望页面刷新 并且希望样式自动更改 但现在当我更改样式时页面总是刷新 我正在使用 vue cli 生成 webpack 配置文件 as below webpack dev conf js
  • 使用 Meteor.js 进行抓取

    我可以使用meteor js 进行抓取吗 刚刚发现cheerio结合起来效果很好request 我可以将它们与流星一起使用吗 或者有类似的东西吗 你有一个可行的例子吗 当然 很难想象还有什么是流星做不到的 首先 您需要一些东西来处理远程 h
  • nuxt.js 文档未定义,pugin 出现问题

    我添加了插件 vue burger menu to my nuxt js项目 我有一个错误 document is not defined 我知道 这个插件仅适用于客户端 于是我在vue文档中找到了在此输入链接描述 https nuxtjs
  • 使用 ksoap2-android 时出现异常

    我有一个关于 ksoap2 的问题 我的问题是 该项目曾经运行良好 直到我不得不格式化我的电脑并再次设置它 我不记得我在应用程序中引用了哪个版本 但我尝试了很多版本 但问题仍然出现 04 05 13 56 18 289 E dalvikvm
  • 将不相关的存储库导入到另一个存储库分支

    我在 stackoverflow 上尝试了很多答案 但似乎没有一个能完全按照我想要的方式工作 基本上我有一个主存储库 我创建了一个分支 例如 功能 并且我需要添加另一个完全不相关的存储库作为此 功能 分支的文件夹 我还需要从导入存储库中获取
  • 双文件类型扩展:Sublime Text 3 中的正确语法突出显示

    我正在和一些人一起工作 scss liquid文件 它们总是以 HTML Liquid 的形式打开 无论我设置语法多少次 Update I tried 打开所有当前扩展名为选项 但不幸的是这会影响以下文件 js liquid and htm
  • 如果文本改变了大小,并且小部件改变了大小

    第一次尝试 https i stack imgur com kN2RQ gif 在这里您可以看到字体如何更改大小以及文本小部件如何更改大小 我需要文本小部件来保持其大小 我尝试在框架中创建一个文本小部件并制作frm grid propaga
  • 如何在kubectl部署中传递环境变量?

    我正在为 django webapp 设置 kubernetes 设置 我在创建部署时传递环境变量 如下所示 kubectl create f deployment yml l key1 value1 我收到如下错误 error no ob
  • 如何从 SQL Server 数据库中的表中删除或更改多个数据库的默认约束?

    我已经解决了之前的这些问题Q1 https stackoverflow com questions 15547210 modify default value in sql server Q2 https stackoverflow com
  • 为创建的 UIToolbar 设置 UIToolbarPosition

    我正在编写仅针对 iOS5 设备的应用程序 因此我试图最大限度地利用新的appearance API 我可以改变我的背景UIToolbar用以下方法 UIToolbar appearance setBackgroundImage
  • 通过使用指令调用开始和结束?

    既定的调用习惯用法swap is using std swap swap foo bar 这边走 swap可以对外部的用户定义类型进行重载std命名空间 我们应该调用begin and end以同样的方式 using std begin u