遇到问题
daocao1986
2008-08-26
最近开始看STL 源码
在STL <xmemroy>中 有这么一段 #define _FARQ template<class _Ty> inline _Ty _FARQ *_Allocate(_SIZT _Count, _Ty _FARQ *) { // check for integer overflow if (_Count <= 0) _Count = 0; else if (((_SIZT)(-1) / _Count) < sizeof (_Ty)) _THROW_NCEE(std::bad_alloc, NULL); // allocate storage for _Count elements of type _Ty return ((_Ty _FARQ *)::operator new(_Count * sizeof (_Ty))); } 为什么要把 _Ty _FARQ * 这个东东当参数弄进来 后面的引用 pointer allocate(size_type _Count) { // allocate array of _Count elements return (_Allocate(_Count, (pointer)0)); } 这么做有什么好处吗? 为什么不直接把那个参数给去了写成 template<class _Ty> inline _Ty _FARQ *_Allocate(_SIZT _Count) { // check for integer overflow if (_Count <= 0) _Count = 0; else if (((_SIZT)(-1) / _Count) < sizeof (_Ty)) _THROW_NCEE(std::bad_alloc, NULL); // allocate storage for _Count elements of type _Ty return ((_Ty _FARQ *)::operator new(_Count * sizeof (_Ty))); } |
|
daocao1986
2008-08-26
:) 问题解决了 是为了
template<class _Ty> _Ty * _Allocator(size_t Count,_Ty *) 函数模板中 _Ty 的引用 不然 修改后 运行 出现了 1>c:\documents and settings\admin\my documents\visual studio 2005\projects\mylibrary\myAllocator.h(109) : error C2783: '_Ty *_Allocator(size_t)' : could not deduce template argument for '_Ty' 错误。 |
|
sole
2008-09-10
意思是不能根据返回类型来推断模板参数的实际类型,是吗?
|
相关讨论
相关资源推荐
- “你的设备遇到问题,需要重启”解决办法
- windows10开机时出现你的设备遇到问题,需要重启
- 电脑显示设备遇到问题需要重启(蓝屏)
- 笔记本电脑设备遇到问题,需要重启,且蓝屏怎么解决
- 电脑BIOS为UEFI BIOS,出现蓝屏情况“你的设备遇到问题,需要重启。我们只收集某些错误信息,然后你可以重新启动。100%完成“,解决方法。
- steam显示连接至服务器时遇到问题,网吧steam在连接至steam服务器时遇到问题的处理办法...
- 系统出现“预体验成员内版本遇到 问题”错误的处理(亲身经历)
- 你的设备遇到问题,需要重启(电脑蓝屏哭脸)
- Office即点即用安装程序遇到问题——解决方法
- DgService.exe遇到问题已经停止工作