Re[2]: C_MemoryManager
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.03.03 07:42
Оценка:
Забыл дописать
template <class TYPE>
class constant
 {
  private:
   const TYPE * lpData;
  public:
   explicit constant(const TYPE & object) : lpData(&object) {}
   const TYPE& Object() const { return *lpData;}
 };
// 
template <class TYPE>
class temporary : private constant<TYPE>
 {
  public:
   explicit temporary(TYPE& object) : constant<TYPE>(object) {}
   TYPE& Object() const {return const_cast<TYPE&>(constant<TYPE>::Object());}
 };
// 
template <class TYPE> 
class result : public TYPE
 {
  public:
   result(const result& rhs) : TYPE(temporary<TYPE>(const_cast<result&>(rhs))) {}
   explicit result(TYPE& rhs) : TYPE(temporary<TYPE>(rhs)) {}
 };
// 
template <class TYPE> struct copy_temporaries
 {
  private:
   operator temporary<TYPE>() {return temporary<TYPE>(static_cast<TYPE&>(*this));}
   operator constant<TYPE>() const {return constant<TYPE>(static_cast<const TYPE&>(*this));}
   operator result<TYPE>() {return result<TYPE>(static_cast<TYPE&>(*this));}
  protected:
   copy_temporaries() {}
   ~copy_temporaries() {}
 };
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.