------- Comment #3 from yuanfei8077 at gmail dot com  2006-09-29 03:02 -------
Plesae seee Comment #2 From Kelvin 2006-09-28 23:25 [reply].

In addition 2 questions I raised in the Commet2.  I also have one more question
about the rule "bind an rvalue to a reference,
we need to let copy ctor of the class be accessible.", I found that this rule
only effective when the reference is delcared as "const &", but if we remove
keyword "const", then "no matching" happen again. 




using std::cout;
using std::endl;


class MemPool {
public:
       MemPool(){};
protected:
       MemPool(const MemPool& mempool);

};

template <class Type> class MemAllocator{

public:
       MemAllocator(MemPool& pool):m_pool(pool){}
       MemPool& get_pool() const {
               return m_pool;
       }
       template<class OtherType>
       MemAllocator<Type>& operator=(const MemAllocator<OtherType>& rhs){
               m_pool = rhs.get_pool();
               return *this;
       }
       MemAllocator& operator=(const MemAllocator& rhs){
               m_pool = rhs.get_pool();
               return *this;
       }

   MemAllocator(const MemAllocator& other)
       : m_pool(other.m_pool) {}
   template<class OtherType>
   MemAllocator(const MemAllocator<OtherType>& other)
       : m_pool(other.get_pool()) {}

private:
       MemAllocator();
//      MemAllocator(const MemAllocator&);
       MemPool &m_pool;

};


template <class _AllocType> class tdat_hash_map {
public:
       typedef _AllocType _Alloc;

       static void func(const _Alloc&) {};
       tdat_hash_map(const _Alloc&); // there will be error if const is removed

       _Alloc malloc;
private:
       tdat_hash_map();
};

class CacheManager {
public:

       typedef tdat_hash_map<MemAllocator<int> > Map;

       Map caches;
       MemPool pool;
       CacheManager():caches(MemAllocator<int>(pool)){};

};


-- 

yuanfei8077 at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29266

Reply via email to