Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
pair.hh
Go to the documentation of this file.
1 #ifndef VCSN_MISC_PAIR_HH
2 # define VCSN_MISC_PAIR_HH
3 
4 # include <vcsn/misc/attributes.hh>
5 # include <vcsn/misc/hash.hh>
6 
7 namespace std
8 {
9 
10  /*---------------.
11  | hash(pair<T>). |
12  `---------------*/
13 
14  template <typename T1, typename T2>
15  struct hash<pair<T1, T2>>
16  {
17  size_t operator()(const pair<T1, T2>& p) const
18  {
19  size_t res = 0;
20  hash_combine(res, p.first);
21  hash_combine(res, p.second);
22  return res;
23  }
24  };
25 }
26 
27 
28 namespace vcsn
29 {
30 
31  /*---------------------------------.
32  | make_ordered_pair(e1<T>, e2<T>). |
33  `---------------------------------*/
34 
35  template <typename T>
36  std::pair<T, T> make_ordered_pair(T e1, T e2)
37  {
38  return e1 < e2 ? std::make_pair(e1, e2) : std::make_pair(e2, e1);
39  }
40 }
41 
42 #endif // !VCSN_MISC_PAIR_HH
automaton pair(const automaton &aut, bool keep_initials=false)
Bridge.
Definition: pair.hh:227
size_t operator()(const pair< T1, T2 > &p) const
Definition: pair.hh:17
std::pair< T, T > make_ordered_pair(T e1, T e2)
Definition: pair.hh:36