测试类型是否是分配器的正确方法是什么?

2024-03-04

Writing allocator_traits<T>::value_type在 SFINAE 上下文中似乎是测试类型是否可行的可行方法T事实上,它是一个分配器。然而,这并不是特别优雅,而且我过去也曾被极端情况所困扰。

因此我的问题是:人们如何最好地实施is_allocator<T>特征包含::value如果 T 是分配器,则为 true,否则为 ::false?


Writing allocator_traits<T>::value_type在 SFINAE 上下文中似乎是测试类型是否可行的可行方法T事实上,它是一个分配器。

我认为这还不够。这只会检查是否T has a value_type并且是可重新绑定的。 libstdc++ 和 libc++ 都会考虑std::map<int, int>成为该模型中的分配者。

该标准有要求表 http://eel.is/c++draft/allocator.requirements#tab:utilities.allocator.requirements对于什么构成Allocator。我认为你最好的选择就是检查几个表达式的有效性,即:

  • X::value_type
  • a.allocate(n)有效并返回X::pointer
  • a.deallocate(p, n)有效

(where X是您正在检查的类型,a is an X&, and n是一个类型的值allocator_traits<X>::size_type)

如果有一种类型检查了所有这些框,但仍然不是 allcoator,那么... ́\_(ツ)_/̅。

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

测试类型是否是分配器的正确方法是什么? 的相关文章

随机推荐

  • Neo4j 服务器与嵌入式模式

    我想确切地知道 neo4j 服务器和嵌入式模式是什么意思 即使我浏览了该帖子Neo4j 服务器与嵌入式 https stackoverflow com questions 8224523 neo4j server vs embedded 但
  • 使用 HTTP/2 时,缩小和连接 JS/CSS 文件以及使用图像精灵是否仍能提供性能优势?

    使用新的 HTTP 2 协议 向同一服务器重复 HTTP 请求所产生的开销已大大减少 考虑到这一点 缩小和连接 JavaScript CSS 文件以及将图像组合成精灵是否仍然具有任何显着的性能优势 或者当使用 HTTP 2 时这些做法不再有
  • EventSourced Saga 实施

    我已经编写了一个事件源聚合 现在实现了一个事件源传奇 我注意到两者是相似的 并创建了一个事件源对象作为两者派生的基类 我在这里看过一个演示http blog jonathanoliver com cqrs sagas with event
  • Android 手机启动时广播接收器不工作

    我为 ICS 创建了一个锁屏 并将其放置在框架中 我们可以使用它打开应用程序 对于用户效果 我在显示锁定屏幕时启动了动画 该动画是使用 SCREEN ON 广播接收器启动的 但是当手机启动时 即使我注册了广播接收器 它也没有到达 onRec
  • 与使用数据库相比,经典 ASP 和 PHP 之间共享会话

    我们有一个经过多年开发的 ASP 内联网 Web 应用程序 它在 IIS6 上运行 如今 我们希望使用 PHP 语言来添加一些新功能 PHP 在同一台服务器上运行良好 会话变量需要在 ASP 和 PHP 之间共享 我问是否有其他替代方案可以
  • 标记模板文字的 TemplateObject 数组是否被其领域弱引用?

    while c tag str0 e str1 JavaScript 运行时创建一个冻结数组 例如Object freeze str0 str1 但还有一个额外的 raw财产 可以使用该对象作为 a 中的键吗 WeakMap以避免每次循环时
  • 需要 Angular 2 ng

    我在 Angular 2 中制作了一个模型驱动表单 并且只有在未选中上面的复选框时才必须显示其中一个输入字段 我使用 ngIf 执行此操作 我的问题是 仅当未选中该复选框时 如何设置所需的输入 在 Angular 1 x 中 我可以通过视图
  • 递归 XSLT,第 2 部分

    好的 继续我的问题here https stackoverflow com questions 2907332 how can i write an xslt that will recursively include other file
  • 经常将 IRB 历史记录刷新到文件

    irb 可以将命令历史记录写入文件 但只有在 irb 会话结束时才会执行此操作 我想更频繁地写出我的命令历史记录 与每个命令 如 shell 历史记录 一样频繁 但不必如此频繁 是否有 irbrc 设置 或者我必须破解 irb 源 已经多次
  • 将鼠标悬停在图像上方的 Font Awesome 图标居中

    当鼠标悬停在图像上时 我试图将字体很棒的图标置于图像的中心 这是我的 HTML div class profile img container img src http s3 amazonaws com 37assets svn 765 d
  • 如何在 Xamarin Forms 中将 Android 日期选择器设置为微调器(而非日历)模式?

    在 Android 设备上的 Xamarin Forms 中选择日期选择器控件时 将显示日期选择器的日历模式视图 如何更改它以显示微调模式 我找到的唯一示例是更新我的 styles xml 这是我所拥有的 但不起作用
  • CSS 不同的链接样式

    据我所知 使用类似的东西 class a 与使用相同 class a link Right 另外 以下两种款式是一样的吗 class a focus class a hover 最后 下面的样式是鼠标按下时的颜色吧 class a acti
  • Zend Framework 2 - Hydrator 策略未响应且水合

    我基本上实现了这个策略 https github com zendframework zf2 pull 2072 主要区别是 我猜 我使用Doctrine2 调用构造函数类 打印测试回显 但两个函数extract and hydrate 不
  • LINQ:将 lambda 表达式作为参数传递以由方法执行和返回

    因此 场景如下 我有一系列不同的存储库类 每个类都可以使用独立的数据上下文或共享上下文 在使用隔离上下文的情况下 我想向基类添加一个方法 该方法允许我将 lambda 指定为参数 让该表达式由所选存储库的隔离上下文执行并返回 IQuerya
  • 如何设置 Bitmap.Width 和 Bitmap.height

    您好 我已经加载了位图 我需要设置自己的高度和宽度 bitmap height 100 但这个声明不允许我 因为它说 System Drawing Image Width cannot be assigned to it is read o
  • __del__() 如何干扰垃圾回收?

    I read class Account object def init self name balance self name name self balance balance self observers set def del se
  • 如何从 Jenkins 推送到 git?

    以下代码是 Jenkins 中的 执行 Shell 构建步骤 该作业从包含文件的存储库中提取ranger policies policies json 我想要做的是更新该文件 在本例中使用curl 命令 然后将更改提交到源代码管理并更新远程
  • Android模拟器中的相机

    我使用 android SDK 4 0 3 和 eclipse Indigo 我正在尝试开发一个使用相机的应用程序 当我拍照时 会出现以下消息 不幸的是 相机已经停止了 在 Eclipse 控制台中 模拟器 错误 camera client
  • 使用端口(例如 localhost:12345)访问 IPv6 可解析 URL 会导致 Strawberry Perl 5.30.1 中的错误地址

    在启用了 IPv6 的 Windows 10 下使用 Strawberry Perl 5 30 1 时 由于 Perl 的 DNS 解析器中似乎存在错误 因此无法正确解析带有端口号的 URL 对于以下测试 我们有一个简单的 Web 服务器
  • 测试类型是否是分配器的正确方法是什么?

    Writing allocator traits