【发布时间】:2012-11-09 21:36:06
【问题描述】:
我正在编写一个类,我想在其中创建这样的成员函数模板专业化
namespace aha
{
class Foo
{
public:
template < typename T >
T To() const
{
// some code here
}
};
template <>
bool Foo::To < bool > () const
{
// some other code here
}
}
gcc 给出错误:
在实例化后显式实例化'To '
我只想对成员函数进行模板特化,这样我的库的用户在将Foo 转换为不同的数据类型时可以获得相同的函数
Foo obj;
bool b( obj.To < std::string > () );
int i( obj.To < int > () );
float f( obj.To < float > () );
等等。
请让我知道我在代码中做错了什么。
【问题讨论】:
-
您的示例使用 g++ 4.6.3 编译得很好。
-
您的意思是“在实例化后显式 specialization of 'To
'”吗?你在专业化之前是否在某处使用 To<bool>? -
使用 gcc-4.7.2 和 Comeau C++ Online 编译良好。你用的是哪个编译器?