次のようなものを検討してください...
template<typename T>
class Vector {
...
bool operator==( const Vector<float> &rhs ) {
// compare and return
}
bool operator==( const Vector<T> &rhs ) {
// compare and return
}
...
};
特殊化が非特殊化バージョンよりも上にあることに注意してください。特殊化されたバージョンを非特殊化されたバージョンの下Vector<float>
に配置した場合、 == 比較は意図したとおりに機能しますか? 何らかの理由で、このシナリオで特殊化を下に置くと、コンパイラがヘッダーを調べたときに、最初にデフォルトが表示され、それが機能することを確認し、それを使用することを読んだことを覚えていると思います。