次のアプローチに違いはありますか?
// approach 1
namespace std
{
template<>
void swap<Foo>(Foo& x, Foo& y) // note the <Foo>
{
x.swap(y);
}
}
// approach 2
namespace std
{
template<>
void swap(Foo& x, Foo& y)
{
x.swap(y);
}
}
自分の文字列型のスワップを特化しようとしたときにこれに出くわし、それswap<::string>
が機能しないことに気付きましたが、まったく別の理由で:)