ハッシュ
namespace std {
template <> struct hash<Foo>
{
size_t operator()(const Foo & x) const
{
/* your code here, e.g. "return hash<int>()(x.value);" */
}
};
}
を、すべてが正常に動作します。しかし、私はそのメカニズムをよりよく理解しようとしています。
はなぜhash<int>()(...)
の真ん中に括弧の余分なペアを追加する必要がありますか?それは醜く見えます。それだけhash<int>(...)
になるように、なぜ我々はそれを設計することはできませんか?
だから、要するに、それは無表情で非自明なすごみ、その結果、C++の混乱や剛性の構文からさらに別の巨大な抽象化リークです。 –
笑(例えば、試料中の一時的なように)名前付きインスタンスせずに使用した場合、それが面倒を見ません。 – Niall
削ら、私は常にC++のための特定の親和性を持つことになります、と私は確かにそれはそれは方法です(とその理由さえも悪いことではありませんいくつかの点で)、私はもっともっと重要なの感じている_why_理解しながら、それは時間がたつにつれて起こります。人生は短すぎると思う。 –