遇到问题

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
意思是不能根据返回类型来推断模板参数的实际类型,是吗?
Global site tag (gtag.js) - Google Analytics