成员函数的模板专用化

Template specialization of a member function

本文关键字:专用 函数 成员      更新时间:2023-10-16

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

错误 C2910:"文件::运算符 <<":无法显式专用

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;
}

您对运算符<<的显式专用化与声明的参数列表不匹配; T const& data vs std::ofstream& out .这个在 MSVC10 中编译。

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

请注意const函数参数之前添加的。