2010-02-26 3 views
2

J'essaie d'expédier déclarer concurrent_bounded_queue;Comment faire pour renvoyer déclarer la classe de modèle suivante

class MyClass { 
    namespace tbb { 
     template<typename T> class cache_aligned_allocator; 
     template<class T, class A = cache_aligned_allocator> class concurrent_bounded_queue; 
    }; 

    // I wish to maintain this syntax. 
    tbb::concurrent_bounded_queue<std::string>& concurrentBoundedQueue; 
} 

je reçois l'erreur suivante:

error C3203: 'cache_aligned_allocator' : unspecialized class template can't be used as a template argument for template parameter 'A', expected a real type 
error C2955: 'tbb::cache_aligned_allocator' : use of class template requires template argument list c:\projects\vitroxreport\src\Executor.h(21) : see declaration of 'tbb::cache_aligned_allocator' 

Puis-je savoir comment je peux éviter?

Merci.

Répondre

5

Allocator est un modèle, mais le second argument de la file d'attente est une classe concrète. Essayez ceci:

class MyClass { 
    namespace tbb { 
     template<typename T> class cache_aligned_allocator; 
     template<class T, class A = cache_aligned_allocator<T> > 
      class concurrent_bounded_queue; 
    }; 

    tbb::concurrent_bounded_queue<std::string>& concurrentBoundedQueue; 
}; 
+0

Fonctionne juste charmant. Merci. –

Questions connexes