/usr/local/lib64/python3.6/site-packages/torch/include/c10/util
NameSizeModeActions
accumulate.h42050644editdlrm
AlignOf.h48350644editdlrm
Array.h113540644editdlrm
ArrayRef.h90580644editdlrm
Backtrace.h3640644editdlrm
BFloat16-inl.h92220644editdlrm
BFloat16-math.h52170644editdlrm
BFloat16.h23720644editdlrm
Bitset.h34140644editdlrm
C++17.h133290644editdlrm
complex.h175420644editdlrm
complex_math.h109020644editdlrm
complex_utils.h9580644editdlrm
ConstexprCrc.h66330644editdlrm
copysign.h8660644editdlrm
DeadlockDetection.h19200644editdlrm
Deprecated.h35790644editdlrm
either.h64230644editdlrm
env.h8350644editdlrm
Exception.h247230644editdlrm
ExclusivelyOwned.h47590644editdlrm
Flags.h100560644editdlrm
flat_hash_map.h616550644editdlrm
FunctionRef.h23010644editdlrm
Half-inl.h86740644editdlrm
Half.h189650644editdlrm
hash.h50840644editdlrm
IdWrapper.h23480644editdlrm
intrusive_ptr.h355630644editdlrm
in_place.h3500644editdlrm
irange.h26790644editdlrm
LeftRight.h60160644editdlrm
llvmMathExtras.h291680644editdlrm
Logging.h112560644editdlrm
logging_is_google_glog.h20310644editdlrm
logging_is_not_google_glog.h82710644editdlrm
MathConstants.h8580644editdlrm
math_compat.h72960644editdlrm
MaybeOwned.h66890644editdlrm
Metaprogramming.h152880644editdlrm
numa.h6960644editdlrm
Optional.h355920644editdlrm
order_preserving_flat_hash_map.h654820644editdlrm
overloaded.h7090644editdlrm
python_stub.h560644editdlrm
qint8.h4720644editdlrm
qint32.h3190644editdlrm
quint4x2.h3660644editdlrm
quint8.h3200644editdlrm
Registry.h122420644editdlrm
reverse_iterator.h87960644editdlrm
ScopeExit.h13450644editdlrm
signal_handler.h31540644editdlrm
SmallBuffer.h12430644editdlrm
SmallVector.h344560644editdlrm
sparse_bitset.h265110644editdlrm
StringUtil.h45380644editdlrm
string_utils.h39890644editdlrm
string_view.h201890644editdlrm
tempfile.h60290644editdlrm
ThreadLocal.h38830644editdlrm
ThreadLocalDebugInfo.h26030644editdlrm
thread_name.h1480644editdlrm
Type.h6070644editdlrm
TypeCast.h69720644editdlrm
typeid.h187930644editdlrm
TypeIndex.h52510644editdlrm
TypeList.h169010644editdlrm
TypeTraits.h53680644editdlrm
Unicode.h2950644editdlrm
UniqueVoidPtr.h41170644editdlrm
Unroll.h6670644editdlrm
variant.h951820644editdlrm
win32-headers.h8580644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/c10/util/IdWrapper.h (2348B)
#pragma once #include #include #include namespace c10 { /** * This template simplifies generation of simple classes that wrap an id * in a typesafe way. Namely, you can use it to create a very lightweight * type that only offers equality comparators and hashing. Example: * * struct MyIdType final : IdWrapper { * constexpr explicit MyIdType(uint32_t id): IdWrapper(id) {} * }; * * Then in the global top level namespace: * * C10_DEFINE_HASH_FOR_IDWRAPPER(MyIdType); * * That's it - equality operators and hash functions are automatically defined * for you, given the underlying type supports it. */ template class IdWrapper { public: using underlying_type = UnderlyingType; using concrete_type = ConcreteType; protected: constexpr explicit IdWrapper(underlying_type id) noexcept( noexcept(underlying_type(std::declval()))) : id_(id) {} constexpr underlying_type underlyingId() const noexcept(noexcept(underlying_type(std::declval()))) { return id_; } private: friend size_t hash_value(const concrete_type& v) { return std::hash()(v.id_); } // TODO Making operator== noexcept if underlying type is noexcept equality // comparable doesn't work with GCC 4.8. // Fix this once we don't need GCC 4.8 anymore. friend constexpr bool operator==( const concrete_type& lhs, const concrete_type& rhs) noexcept { return lhs.id_ == rhs.id_; } // TODO Making operator!= noexcept if operator== is noexcept doesn't work with // GCC 4.8. // Fix this once we don't need GCC 4.8 anymore. friend constexpr bool operator!=( const concrete_type& lhs, const concrete_type& rhs) noexcept { return !(lhs == rhs); } underlying_type id_; }; } // namespace c10 #define C10_DEFINE_HASH_FOR_IDWRAPPER(ClassName) \ namespace std { \ template <> \ struct hash { \ size_t operator()(ClassName x) const { \ return hash_value(x); \ } \ }; \ }