4

我必须在(C++,我使用 MS Visual Studio 2008 SP1)中对类成员函数使用显式特化,但我无法成功编译它。得到

错误 C2910: 'File::operator <<' : 不能明确专门化

class File
{
   std::ofstream mOutPutFile;
public:
   template<typename T>
   File& operator<<(T const& data);
};


template<typename T>
File& File::operator<< (T const& data)
{
    mOutPutFile << preprosesor(data);
    return *this;
}

template< >
File& File::operator<< <> (std::ofstream& out)
{
   mOutPutFile << out;
   return *this;
}
4

1 回答 1

6

您对 operator << 的显式特化与声明的参数列表不匹配;T const& datastd::ofstream& out。这是在 MSVC10 中编译的。

template<>
File& File::operator<< <std::ofstream> (const std::ofstream& out)
  {
  mOutPutFile << out;
  return *this;
  }

注意const在函数参数之前添加。

于 2012-04-23T14:12:18.360 回答