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

演算子<<の明示的な特殊化が、宣言のパラメーターリストと一致しませんでした。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 に答える