c++0x std::shared_ptr 与 boost::shared_ptr

2024-03-02

我有一个大量使用的 C++ 代码shared_ptr和STL。一个常见的标题说

#include<boost/shared_ptr.hpp>
using boost::shared_ptr;  // for shared_ptr
using namespace std;      // for STL

我现在想切换到 c++0x 以利用语言功能,使用 gcc 4.6 和-std=c++0x。然而有std::shared_ptr现在也是如此,导致未指定的歧义shared_ptr (boost::shared_ptr vs std::shared_ptr).

当切换到std::shared_ptr相反,像这样:

#include<memory>
using namespace std;      // for STL; also imports std::shared_ptr

然后我遇到了问题boost::python,它显然适用于boost::shared_ptr仅(至少无需进一步摆弄):

/usr/include/boost/python/object/make_ptr_instance.hpp:30:52: error: no matching function for call to 'get_pointer(const std::shared_ptr<Cell>&)'

因此我的问题是

  • 如果有一个简单的解决方案来解决之间的歧义boost::shared_ptr and std::shared_ptr(除了现在不使用 c++0x 之外),并且
  • if boost::shared_ptr最终将只是一个别名std::shared_ptr;这会自动解决我的问题。

Thanks!


您需要为共享指针类定义独立函数“get_pointer”,才能与 Boost Python 一起使用。(请注意,这使您能够编写自己的共享指针,并且仍然可以使用 Boost Python:这是一个有意识的设计工作,旨在防止不同 Boost 库的紧密耦合).

您可能会使用 boost tr1 兼容性标头来实现这一点,但我还没有尝试过。

http://boost.cowic.de/rc/pdf/tr1.pdf http://boost.cowic.de/rc/pdf/tr1.pdf

当 Boost.TR1 配置为使用标准库的本机 TR1 实现时,它不会做太多事情: 仅包含适当的标头。

当 Boost.TR1 使用特定组件的 Boost 实现时,它包含适当的 Boost 标头和 使用 using 声明在命名空间 std::tr1 中导入必要的声明。请注意,只有那些属于 标准的一部分被导入:实现是故意非常严格的,不包括任何特定于 Boost 的扩展 命名空间 std::tr1,以便捕获用户代码中的任何可移植性错误。如果您确实需要使用 Boost 特定的扩展,那么 您应该直接包含 Boost 标头并使用命名空间 boost:: 中的声明。请注意,这种实现方式 不完全符合标准,特别是无法添加用户定义的模板专业化 TR1 组件放入命名空间 std::tr1 中。还有一两个 Boost 库尚未完全符合标准, 任何此类不符合项均记录在 TR1 按主题部分中。希望非标准行为的发生应该 然而在实践中极为罕见。

如果您使用标准的符合标头包含(在 boost/tr1/tr1 中),那么这些标头名称有时可能会与现有的冲突 标准库头(例如shared_ptr被添加到现有的标准库头而不是它的 自己的标题)。这些标头通过以下两种方式之一转发到您现有的标准库标头:对于 gcc,它使用 #include_next, 对于其他编译器,它使用宏 BOOST_TR1_STD_HEADER(header) (在 boost/tr1/detail/config.hpp 中定义)来评估 到 #include <..>。对于大多数编译器来说,这应该“直接开箱即用”,但这确实意味着这些 标头不应放置在编译器搜索路径中已存在的名为“include”的目录中。

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

c++0x std::shared_ptr 与 boost::shared_ptr 的相关文章

  • Python 如果 kwargs 中的 key 并且 key 为 true

    if force in kwargs and kwargs force is True 感觉应该有更好的方法来编写这个条件 因为我重复了键和变量 假设您确实想检查返回的关键字参数是否is True 这是另一种稍微不同的方式 if kwarg
  • matplotlib get_color 用于子图

    我正在按照这里的教程进行操作 https matplotlib org gallery ticks and spines multiple yaxis with spines html https matplotlib org galler
  • Flask - 如何从 JSON GET 请求获取参数

    我有一个发出以下 GET 请求的客户端 api GET tasks 5fe7eabd 842e 40d2 849e 409655e0891d 22task 22 22hello 22 22url 22 22 tasks 5fe7eabd 8
  • matplotlib 的 pcolor 中的白线

    在某些 pdf 查看器 例如 OSX 上的 Preview 中 使用以下命令绘制的图matplotlib的 pcolor 有白线 见下图 我怎样才能摆脱它们 源代码非常简单 选择任何数据x y z import matplotlib mat
  • Django 和 AWS 简单电子邮件服务 [重复]

    这个问题在这里已经有答案了 我正在尝试启动并运行 django 站点 并且正在尝试启用 django 的标准密码重置服务 我的网站由 AWS EC2 托管 因此我想将 AWS SES 用于我的电子邮件服务 但是 我无法使 smtp 连接正常
  • 如何逐行替换(更新)文件中的文本

    我试图通过读取每一行 测试它 然后写入是否需要更新来替换文本文件中的文本 我不想保存为新文件 因为我的脚本已经先备份文件并对备份进行操作 这是我到目前为止所拥有的 我从 os walk 获取路径 并且保证 pathmatch var 正确返
  • 点击后 Dash DropDown 关闭

    我不希望下拉菜单在选择值后关闭 我希望它在我的页面上保持打开状态 我正在使用 dcc Dropdown dcc Dropdown id job type options self options placeholder Select one
  • 专门化模板别名的最佳方法(或解决方法)

    我目前正在实现一个基于元编程的小型编译时计算库 如果已经为运算符定义了一个基类 它有一个结果 typedef 我决定使用积分包装器 例如std integral constant作为值而不是原始整数值 以在库中提供统一的接口 以及一个 n
  • 将Python嵌入到C中——导入模块

    我在使用嵌入式 Python for C 时遇到问题文档 http docs python org extending embedding html 每当我尝试使用导入的模块时 我都会得到 PythonIncl exe 中 0x1e089e
  • 确保特定列位于数据框中最后(或第一个)的最快方法是什么

    given df df pd DataFrame np arange 8 reshape 2 4 columns list abcd 假设我需要专栏 b 到最后 我可以做 df a c d b 但是确保给定列位于末尾的最有效方法是什么 这就
  • UTF-8 解码如何知道字节边界?

    我一直在阅读大量有关 unicode 编码的文章 尤其是有关 Python 的文章 我想我现在对此已经有了相当深入的了解 但仍有一个小细节我有点不确定 解码如何知道字节边界 例如 假设我有一个带有两个 unicode 字符的 unicode
  • 如果异常保存在 std::exception_ptr 中,那么在 catch 语句之外使用异常是否安全?

    我有一个std exception ptr其中有一个例外 我要调用std rethrow exception要获取实际的异常 catch 语句之后的异常是否有效 我的猜测是 因为我仍然持有std exception ptr它仍然有效 参见示
  • Python 的二进制字符串列表

    我有一个像这样的二进制字符串 1100011101 我想将其解析为一个列表 其中每个 1 或 0 块都是列表中的单独值 例如 1100011101 变成 11 000 111 0 1 您可以通过使用正则表达式而不是从中获得一点 次要 性能g
  • Web 应用程序框架:C++ 与 Python

    作为一名程序员 我熟悉 Python 和 C 我正在考虑编写自己的简单 Web 应用程序 并且想知道哪种语言更适合服务器端 Web 开发 我正在寻找一些东西 它必须是直观的 我认识到 Wt 存在并且它遵循 Qt 的模型 我讨厌 Qt 的一件
  • Odoo:如何覆盖原始功能

    在 Odoo 中 每次打开产品表单时都会计算产品的数量 这发生在模型中product product gt function product available 该函数返回一个名为 res 的字典 Example res 8 qty ava
  • 打包布尔数组需要通过 int (numpy 1.8.2)

    我正在寻找更紧凑的方式来存储布尔值 numpy 内部需要 8 位来存储一个布尔值 但是np packbits允许打包 他们 这真是太酷了 问题是要打包在4e6字节数组a32e6字节我们需要首先使用的布尔值数组256e6字节将布尔数组转换为
  • 在 python 中,VSCode 调试器不会单步执行外部代码。无法弄清楚如何编辑 launch.json 中的“justMyCode”

    我一直在提到https code visualstudio com docs python debugging justmycode https code visualstudio com docs python debugging jus
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • centos上无法安装Pillow

    我上面有 centos 6 3 和 python 2 6 当我尝试通过 easy install 安装它时 出现以下错误 imaging c 76 20 error Python h No such file or directory In
  • Django Python - LDAP 身份验证

    我目前正在研究 Django Python 我的目标是从 Ldap 目录对用户进行身份验证 我确实有 python 代码来访问 ldap 目录并检索信息 Code import ldap try l ldap open ldap forum

随机推荐

  • Typescript 在 vs 2015 ctp 6 中禁用保存时编译

    我需要知道如何禁用打字稿文件保存时编译 默认情况下启用 Typescript 编译 您可以执行下一步来禁用它 选择并单击 卸载项目 菜单项 选择已卸载的项目并单击 编辑 kproj 将新的 PropertyGroup 节点添加到项目根节点
  • 捆绑链接的 JavaScript 文件

    我正在使用 Visual Studio 2012 和 MVC4 我已将链接文件 来自另一个项目 添加到我的 MVC4 应用程序中 以下是该文件的属性 构建操作 内容 复制到输出目录 不复制 这是我的捆绑包的示例 bundles Add ne
  • WPF DataGrid AlternatingRowBackground 和 RowStyle 优先级

    我该如何做我的RowStyle后申请AlternatingRowBackground 我想要物品 有IsOrange as true具有Orange背景 无论交替的行背景如何 目前情况并非如此 XAML
  • 当选择文本时,如何用我自己的视图替换 UIMenuController?

    当选择文本时 默认情况下会弹出一个 UIMenuController 其中包含剪切 复制 粘贴等功能 我想用我自己的自定义视图替换它 外观相似 但高两倍 以便我可以有两行按钮 自定义视图 我怎样才能做到这一点 我知道没有简单的方法 我预计即
  • Mongodb动态like运算符

    在 mongodb 中相当于 sql like 运算符是 db users find shows m 使用 nodejs javascript 我想根据 url 参数动态更改字母 我努力了 letter req params letter
  • RxJava Observable.fromEmitter 奇怪的背压行为

    我一直在利用Observable fromEmitter 作为一个绝佳的替代品Observable create 我最近遇到了一些奇怪的行为 但我不太明白为什么会出现这种情况 我真的很感谢对背压和调度程序有一定了解的人来看看这个 publi
  • WebClient.DownloadString 速度慢?

    我正在开发一个使用 ASP Net 3 5 运行的 Web 应用程序 在应用程序的某个地方 我正在调用外部系统 此调用包括从特定 url 下载字符串 string targetUrl BuildMyUrl WebClient wc new
  • str(列表) 是如何工作的?

    为什么str list 返回我们如何在控制台上看到列表 如何str list 工作 任何对 CPython 代码的引用str list gt gt gt x abc def ghi gt gt gt str x abc def ghi 要从
  • 通过 C/C++ 程序使 LED 闪烁的步骤?

    通过 C C 程序制作带有 LED 闪光灯的小电路的最简单步骤是什么 我希望所需的依赖项和包数量最少 我应该将某些东西连接到哪个端口 我会使用哪个编译器 如何将数据发送到该端口 我需要微处理器吗 如果不是 我不想在这个简单的项目中使用它 编
  • 在 Jenkinsfile 中设置 SonarQube Webhook

    我正在尝试创建一个 Jenkins 多分支管道 在每次推送到 bitbucket 时 都会对项目的该分支执行 SonarQube 分析 Jenkins 正确地为每个分支创建新作业 并在 SonarQube 中创建一个新项目 并将分支名称附加
  • 表面和纹理之间的差异(SDL/一般)

    谁能用简单的语言向我解释一下纹理和表面有什么区别 我看到它用在SDL2 as SDL Surface and SDL Texture SDL Texture是从创建的SDL Surface它又是从图像 位图创建的 两者都是像素的集合 但我没
  • 静态 uint8_t 数组的输入过程和类型

    我目前正在尝试将 Arduino IDE 中的整数变量转换为静态 uint8 t 数组的值 我在用 include
  • .NET 如何定位我正在“使用”的命名空间的 dll?

    NET如何定位我所在命名空间的dllusing 是的 我们确实提到了 referene c program files 中的路径 但是在构建和部署之后以及当软件安装在某些用户的计算机上时 它可能与我 开发人员 提到的路径不同 我的意思是它可
  • 如何删除 Rails 中的索引

    我发现我的架构中有两个 survey id 列 这给我带来了一些问题 具体来说 我需要删除第二个索引 因为我不希望 Survey id 是唯一的 add index completions survey id name index comp
  • .NET Core IHttpContextAccessor 问题

    我有静态助手类 public static class Current public static string Host get return httpContextAccessor here 如何访问 Host 属性中的当前 HttpC
  • 在Lua中注册C++函数?

    我正在尝试在 Lua 中注册一个 C 函数 但出现此错误 CScript cpp 39 error argument of type int CScript lua State does not match int lua State ED
  • 为什么 requirejs 尝试加载 .map?

    我正在尝试从 CDN 具体来说是 cdnjs 加载脚本 并且在 requirejs 中您必须像这样保留扩展名 require config baseUrl static js paths underscore cdnjs cloudflar
  • 使用 Active Record & Rails ORDER BY 有时为空的列

    在我的 Rails 应用程序 使用 postgresql 中 我尝试编写一个 Active Record 查询来查找一组志愿者记录 然后按以下顺序对它们进行排序first name then last name then email 此外
  • 如何获取ARN(亚马逊资源名称)?

    我正在尝试使用 AWS 资源标记 API Net 将标签添加到 AWS 资源 我遇到的问题是 Tagging API 使用ARNs作为资源的标识符 但是当我下载资源时 我拥有的唯一 Id 是 InstanceId 有没有一种方法 基于Ins
  • c++0x std::shared_ptr 与 boost::shared_ptr

    我有一个大量使用的 C 代码shared ptr和STL 一个常见的标题说 include