[DEBUG] correct pb on the 'void& operator*()'
This commit is contained in:
parent
f2dd438a7d
commit
447ae56fd5
@ -53,36 +53,54 @@ namespace ememory {
|
|||||||
public:
|
public:
|
||||||
void reset();
|
void reset();
|
||||||
int64_t useCount() const;
|
int64_t useCount() const;
|
||||||
bool operator == (std::nullptr_t) const;
|
bool operator==(std::nullptr_t) const;
|
||||||
bool operator==(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
bool operator==(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
||||||
bool operator != (std::nullptr_t) const;
|
bool operator!=(std::nullptr_t) const;
|
||||||
bool operator!=(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
bool operator!=(const SharedPtr<EMEMORY_TYPE>& _obj) const;
|
||||||
const EMEMORY_TYPE* get() const;
|
const EMEMORY_TYPE* get() const;
|
||||||
EMEMORY_TYPE* get();
|
EMEMORY_TYPE* get();
|
||||||
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
|
||||||
, int>::type = 0>
|
|
||||||
const EMEMORY_TYPE* operator->() const;
|
const EMEMORY_TYPE* operator->() const;
|
||||||
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
|
||||||
, int>::type = 0>
|
|
||||||
EMEMORY_TYPE* operator->();
|
EMEMORY_TYPE* operator->();
|
||||||
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
#if 0
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
template<>
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
const typename std::enable_if<!std::is_void<EMEMORY_TYPE>::value, EMEMORY_TYPE>::type& operator*() const {
|
||||||
, int>::type = 0>
|
return *m_element;
|
||||||
const EMEMORY_TYPE& operator*() const;
|
}
|
||||||
template<class EMEMORY_TYPE2 = EMEMORY_TYPE,
|
template<>
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename std::enable_if<!std::is_void<EMEMORY_TYPE>::value, EMEMORY_TYPE&>::type operator*() {
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
return *m_element;
|
||||||
, int>::type = 0>
|
}
|
||||||
EMEMORY_TYPE& operator*();
|
#else
|
||||||
|
#if 1
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< !std::is_void<EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_void<EMEMORY_TYPE2>::value
|
||||||
|
, int>::type>
|
||||||
|
const EMEMORY_TYPE2& operator*() const {
|
||||||
|
return *m_element;
|
||||||
|
}
|
||||||
|
template<class EMEMORY_TYPE2,
|
||||||
|
typename std::enable_if< !std::is_void<EMEMORY_TYPE>::value
|
||||||
|
&& !std::is_void<EMEMORY_TYPE2>::value
|
||||||
|
, int>::type>
|
||||||
|
EMEMORY_TYPE2& operator*() {
|
||||||
|
return *m_element;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
const EMEMORY_TYPE& operator*() const {
|
||||||
|
return *m_element;
|
||||||
|
}
|
||||||
|
EMEMORY_TYPE& operator*() {
|
||||||
|
return *m_element;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
void swap(SharedPtr<EMEMORY_TYPE>& _obj);
|
void swap(SharedPtr<EMEMORY_TYPE>& _obj);
|
||||||
ememory::Counter* getCounter() const {
|
ememory::Counter* getCounter() const {
|
||||||
return m_counter;
|
return m_counter;
|
||||||
}
|
}
|
||||||
|
// TODO: unique
|
||||||
|
// TODO: bool
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,27 +235,19 @@ EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::get() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
template<class EMEMORY_TYPE2,
|
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
|
||||||
, int>::type>
|
|
||||||
const EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() const {
|
const EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() const {
|
||||||
return m_element;
|
return m_element;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
template<class EMEMORY_TYPE2,
|
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
|
||||||
, int>::type>
|
|
||||||
EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() {
|
EMEMORY_TYPE* ememory::SharedPtr<EMEMORY_TYPE>::operator->() {
|
||||||
return m_element;
|
return m_element;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
template<class EMEMORY_TYPE2,
|
template<class EMEMORY_TYPE2,
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
&& !std::is_void<EMEMORY_TYPE2>::value
|
||||||
, int>::type>
|
, int>::type>
|
||||||
const EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() const {
|
const EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() const {
|
||||||
return *m_element;
|
return *m_element;
|
||||||
@ -264,11 +256,12 @@ const EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() const {
|
|||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
template<class EMEMORY_TYPE2,
|
template<class EMEMORY_TYPE2,
|
||||||
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
typename std::enable_if< std::is_same<EMEMORY_TYPE2, EMEMORY_TYPE>::value
|
||||||
&& !std::is_same<EMEMORY_TYPE2, void>::value
|
&& !std::is_void<EMEMORY_TYPE2>::value
|
||||||
, int>::type>
|
, int>::type>
|
||||||
EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() {
|
EMEMORY_TYPE& ememory::SharedPtr<EMEMORY_TYPE>::operator*() {
|
||||||
return *m_element;
|
return *m_element;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
template<typename EMEMORY_TYPE>
|
template<typename EMEMORY_TYPE>
|
||||||
void ememory::SharedPtr<EMEMORY_TYPE>::swap(SharedPtr& _obj) {
|
void ememory::SharedPtr<EMEMORY_TYPE>::swap(SharedPtr& _obj) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user