MEL
Microthread & Execution library
AsPtr.h
1 #pragma once
2 #include <mpl/TypeTraits.h>
3 #include <mpl/equal.h>
4 namespace mel
5 {
6  namespace mpl
7  {
30  template <class T> class AsPtr
31  {
32  private:
33  T mObject;
34  public:
35  AsPtr( const T& object ):mObject( object ){}
36  AsPtr( const AsPtr& object ):mObject( object.mObject ){}
37  inline const T* operator->() const
38  {
39  return &mObject;
40  }
41  inline T* operator->()
42  {
43  return &mObject;
44  }
45  inline operator T*()
46  {
47  return &mObject;
48  }
49  inline const T& operator*() const
50  {
51  return mObject;
52  }
53  inline T& operator*()
54  {
55  return mObject;
56  }
57  inline bool operator == ( const AsPtr& ob2 ) const;
58  };
59  // helper function for argument deduction
60  template <class T> AsPtr<T> asPtr( T object )
61  {
62  return AsPtr<T>( object );
63  }
64  template <class T>
65  bool AsPtr<T>::operator == ( const AsPtr& ob2 ) const
66  {
67  //return mObject == ob2.mObject;�como saber si tiene operator==
68  //return Compare<::mel::mpl::ComparableTraits<T>::Result,T >::compare( mObject,ob2.mObject );
69  //return Compare<::mel::mpl::ComparableTraits<T>::Result >::compare( mObject,ob2.mObject );
70  return mel::mpl::equal<true>( mObject, ob2.mObject );
71  }
72  }
73 }
Typical Traits for types.
Definition: AsPtr.h:31
Definition: Callback_Impl.h:11