模板函数的调用困惑

http://community.csdn.net/Expert/topic/5647/5647651.xml?temp=.4312097
感觉问题很经典,做个备份,日后研究

Class Cat
{
};

template< typename T >
T* alloc()
{
   return new T;
}

auto_ptr<Cat> pCat23( auto_ptr<Cat>( alloc<Cat>() ) );
也并非使用时这样写,但是偶然的拼凑发现一个很令我困惑的问题,上面的代码不能编译成功,“error C2909: 'alloc': explicit instantiation of template function requires return type”. 我的编译器是:visual studio 2003 7.1.3088

如果写成:
auto_ptr<Cat> pCat23( auto_ptr<Cat>( new Cat ) );
就可以通过编译了,

请问哪位高手还能赐教?
/////////////////////////////////////////////////////////////

函数后面跟尖括号?我是没见过
像你这个函数貌似应该定义一个类然后重载它的函数调用运算符,做成仿函数形式
试试这个吧
template<typename T>
class Alloc
{
public:
    T* operator ()(void){ return new T; }
}

Alloc<Cat> alloc;
auto_ptr<Cat> pCat23(alloc()); 

你可能感兴趣的:(c,function,Class,编译器,Instantiation)