std::hash<std::experimental::optional> (3) - Linux Man Pages

std::hash<std::experimental::optional>: std::hash<std::experimental::optional>

NAME

std::hash<std::experimental::optional> - std::hash<std::experimental::optional>

Synopsis


Defined in header <experimental/optional>
template<class T> (library fundamentals TS)
struct hash<std::experimental::optional<T>>;


The template specialization of std::hash for the std::experimental::optional class allows users to obtain hashes of the values contained in optional objects.

Template parameters


T - the type of the value contained in optional object. The specialization std::hash<T> must meet the requirements of class template hash.

Example


// Run this code


  #include <experimental/optional>
  #include <unordered_set>
  #include <string>
  #include <iostream>
  using namespace std::literals;
  int main()
  {
      // hash<optional> makes it possible to use unordered_set
      std::unordered_set<std::experimental::optional<std::string>> s = {
              "abc"s, std::experimental::nullopt, "def"s
      };


      for(const auto& o : s)
          std::cout << o.value_or("(null)") << ' ';
  }

Possible output:


  def abc (null)

See also


hash hash function object
        (class template)
(C++11)