次のコードがコンパイルされない理由を理解しようとしています。
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*」として渡さない理由を理解できません。