我试图理解为什么以下代码无法编译。
class X
{
public:
template< typename T >
void set( T & val )
{
}
};
int main( int c, char *v[] )
{
X x;
x.set( new int( 99 ) ); // 15
}
在我的 solaris 编译器上,出现以下错误。
"x.cpp", line 15: Error: Could not find a match for X::set<X::T>(int*) needed in main(int, char**).
我不明白为什么编译器不会引用指向 int 的指针并将类型“T”作为“int *”传递