改进::scoped_ptr文档不一致
boost::scoped_ptr documentation inconsistency?
boost::scoped_ptr
文档包含一个被称为句柄/正文习语的技术示例。它是用下面的话描述的:
scoped_ptr_example_test.cpp示例程序包括一个头文件,scoped_ptr_example.hpp,它使用scoped_ptr<>对不完整类型隐藏实现。
然而,与此同时,在checked_delete
的文档中声明:
一个特别麻烦的情况是当智能指针的析构函数,比如boost::scoped_ptr::~scoped_ptr,用不完整类型实例化。这通常会导致无声的、难以追踪的失败。所提供的函数和类模板可以用来防止这些问题需要一个完整的类型,否则会导致编译错误。
scoped_ptr
在实现中确实使用了checked_delete
。在我看来,这两段经文似乎相互矛盾。此外,我无法编译我的代码,该代码试图使用下面的消息使用所建议的技巧:
checked_delete.hpp:32: error: invalid application of 'sizeof' to
incomplete type 'MyClass'
所以,确实,scoped_ptr
的文档是错误的还是我只是错过了什么?
它们并不相互矛盾。因为scoped_ptr
是一个模板,而且因为代码中没有显式的实例化,所以每个方法都是按需实例化的。这意味着该类型必须在~scoped_ptr<>
实例化之前完成,在本例中,在保存类型完成后的.cpp文件中(查找靠近文件末尾的example::~example(){}
,这是~scoped_ptr<>
实例化的地方)
类模板的成员函数只在它所在的位置实例化使用。在ins中唯一使用boost::scoped_ptr::~scoped_ptr
的地方example
的析构函数。定义为scoped_ptr_example.cpp
,定义后example::implementation
完成。这个函数的情况下,boost::checked_delete
将不会编译类型不完整;boost::scoped_ptr::~scoped_ptr
使用这个,以便的上下文中调用该代码将无法编译类型不完整
(fww:在粉刺习语中使用boost::scoped_ptr
有点过头了,而且不是很有用;因为必须提供用户定义的析构函数不管怎么说,它真的买不了什么,只增加了一点点复杂性。)
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 关于类的 Python 文档 - 对C++的引用不正确
- ncurses 找不到任何关于cchar_t的文档
- 如何确保 C/C++ 代码中不会缺少 doxygen 风格的文档注释?
- EM_SETSEL在.docx(word文档)中不起作用
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 实现附加对象:不清楚的文档示例
- 在源代码中,调用函数时不带 ().文档给出了 1 个必需的参数
- 在文档中引用使用doxygen的结构成员不起作用;结构成员未出现在文档中
- 如何在不参考文档的情况下获得 g++ 编译器的 c++ 的默认模式
- 我该如何文档文档以使文档适用于类成员而不是匿名类型
- 有人能解释一下他们的意思是list.pushback文档(不会使迭代器无效)吗
- Boost ASIO:文档不完整
- Doxygen:是否可以对C++函数参数进行分组,即在不复制的情况下拥有相同的文档
- QXmlStreamReader读取空文本,文档肯定不是空的
- 不支持的操作.由JRC引擎处理的文档不能在c++堆栈中打开
- OpenAL取消排队错误代码,不完整的文档
- 改进::scoped_ptr文档不一致
- 更新Qlabel文档矩形,该矩形调用的标签不是文本标签.为什么
- 当前不会命中该断点.在vc++(visual studio 2013)中没有为这个文档加载符号