Fixed compile errors with std::hash specialisation

Reverted "Replaced a std::hash specialization with explicit type."
This reverts commit 63de5f8a555e3bd4b9309792e3a9c0dcb9e8f4b6.

Reverted "gcc compilation fix."
This reverts commit 9c5463be1e090ff65acdc0c0571788f60ad76478.

Made operator() const
Included Functional header