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