template <typename T>
struct eq_t { bool eq(const T &lhs, const T &rhs) { return (lhs == rhs); } };

というような、比較関数をラップした構造体があり、いくつかの型に対して特殊化したバージョンもあります。
その中に、vector一般に対して部分特殊化した次のようなものがあるのですが、
template <typename T>
struct eq_t<std::vector<T>>
{
bool eq(const std::vector<T> &lhs, const std::vector<T> &rhs)
{
return (lhs.size() == rhs.size() && std::equal(lhs.begin(), lhs.end(), rhs.begin()));
}
};
これをコンテナ一般(というかbegin(), end()を持つクラス)を対象とするにはどうすればいいのでしょうか?
vector::mplあたりに何かありそうか気はするのですが。