std::has_virtual_destructor
和类似的检查如何实施?我试着在Visual Studio中查看type_traits
头文件,但是有太多的宏和模板甚至没有想法。这张支票可以用任何合理简单的形式表达吗?我想至少知道它的工作原理,因为现在我不知道。如何实现std :: has_virtual_destructor?
回答
许多类型特征需要编译器的魔力:这些特征本质上为不同编译器提供的钩子提供了一个库接口。编译器如何实现这些钩子完全取决于它们,并且没有一致的接口。
在本次会议上讨论了如何增加对未来版本的反思,如果像std::has_virtual_destructor<T>
这样的特征可能最终导致图书馆实施。然而,在反思之后会出现一段时间。
这么多年来他们为什么没有标准化这些钩子的界面呢? –
@VioletGiraffe他们不是那么做的吗? – jrok
@VioletGiraffe:你可以认为特质界面是钩子。实际上,编译器厂商有不同的方法来实际公开功能,虽然我在很多年前曾问过创建一个一致的接口,但编译器供应商表示,必须遵守特定的方法将会过于束缚。 –
- 1. std :: experimental :: source_location如何实现?
- 2. std :: vector :: swap如何实现?
- 3. std :: lower_bound()实现
- 4. 实现std :: iterator
- 5. 如何用std算法重新实现?
- 6. std :: tuple是如何实现的?
- 7. 如何实现std :: vector insert? C++
- 8. 如何用std :: vector实现堆栈?
- 9. 如何实现std-like迭代器的自定义实现?
- 10. C++ 11如何实现`std :: string ToString(std :: tuple <Args...>&t)`?
- 11. 的std ::移动实现
- 12. std :: list实现&指针arithemetic。
- 13. C++ 98/03 std :: is_constructible实现
- 14. SIMD std :: nth_element的实现
- 15. 怎样的std :: unordered_map实现
- 16. std :: ignore的可能实现
- 17. 如何实现运算符>>(std :: istream&,std :: array <char, N>&)?
- 18. 如何使用std :: is_integral <>选择实现?
- 19. 如何实现CString哈希函数与std :: unordered_map一起使用?
- 20. 如何在不进行轮询的情况下实现std :: when_any?
- 21. 如何实现类似于std :: vector的自定义类
- 22. 如何使用std :: shared_ptr实现缓存管理器?
- 23. std :: sort如何仅使用迭代器实现交换操作?
- 24. std :: vector :: push_back(T &&值)是如何实现的?
- 25. 如何实现的std ::哈希模板类
- 26. 我们应该如何实现std :: error_code兼容的API?
- 27. 使用std libs实现Java TFTP - 如何确认数据包?
- 28. 如何在C++中使用std :: function实现战略模式
- 29. std :: string ::替换标准实现?
- 30. 是否有查找表的std实现?
这是编译器的魔力。你不能在标准的C++中实现它。 Boost提供了这个特征类,它们使用编译器特定的内在函数。检查[此标题](http://www.boost.org/doc/libs/1_53_0/boost/type_traits/intrinsics.hpp)。 – jrok
@jrok:你确定吗?为什么它不是一个编译器关键字呢?顺便说一句,我非常确定Boost在C++ 0x编译器之前。 –
查看更新的评论。 – jrok