成员函数的模板特化

Agu*_*gus 4 c++ templates compiler-errors ofstream template-specialization

我必须在(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;
}
Run Code Online (Sandbox Code Playgroud)

And*_*rey 5

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

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

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