20 #ifndef LLVM_ADT_POLYMORPHIC_PTR_H
21 #define LLVM_ADT_POLYMORPHIC_PTR_H
43 #if LLVM_HAS_RVALUE_REFERENCES
65 T *
get()
const {
return ptr; }
85 template <
typename T,
typename U>
87 return lhs.
get() == rhs.
get();
90 template <
typename T,
typename U>
92 return lhs.
get() != rhs.
get();
95 template <
typename T,
typename U>
97 return lhs.
get() == rhs;
100 template <
typename T,
typename U>
102 return lhs.
get() != rhs;
105 template <
typename T,
typename U>
107 return lhs == rhs.
get();
110 template <
typename T,
typename U>
112 return lhs != rhs.
get();
An owning, copyable polymorphic smart pointer.
polymorphic_ptr(T *ptr=0)
polymorphic_ptr & operator=(T *arg)
void swap(OwningPtr< T > &a, OwningPtr< T > &b)
void swap(polymorphic_ptr &arg)
polymorphic_ptr & operator=(polymorphic_ptr arg)
polymorphic_ptr(const polymorphic_ptr &arg)
bool operator!=(uint64_t V1, const APInt &V2)
#define LLVM_EXPLICIT
Expands to explicit on compilers which support explicit conversion operators. Otherwise expands to no...
bool operator==(uint64_t V1, const APInt &V2)