reid from https://github.com/michuanhaohao/reid-strong-baseline
zhangmeng
2020-01-17 f7c4a3cfd07adede3308f8d9d3d7315427d90a7c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#pragma once
 
#include <string>
#include <utility>
 
namespace c10 {
 
struct OperatorName final {
  std::string name;
  std::string overload_name;
  OperatorName(std::string name, const std::string& overload_name)
      : name(std::move(name)), overload_name(overload_name) {}
};
 
inline bool operator==(const OperatorName& lhs, const OperatorName& rhs) {
  return lhs.name == rhs.name && lhs.overload_name == rhs.overload_name;
}
 
inline bool operator!=(const OperatorName& lhs, const OperatorName& rhs) {
  return !operator==(lhs, rhs);
}
 
inline std::string toString(const OperatorName& opName) {
  std::string result = opName.name;
  if (opName.overload_name.size() != 0) {
    result += "." + opName.overload_name;
  }
  return result;
}
 
}
 
namespace std {
  template <>
  struct hash<::c10::OperatorName> {
    size_t operator()(const ::c10::OperatorName& x) const {
      return std::hash<std::string>()(x.name) ^ (~ std::hash<std::string>()(x.overload_name));
    }
  };
}